첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ 칵테일 정렬하기 예제

----------------------------------------------------------------------------------------------------

using System;

 

int[] array = new int[] { 10, 50, 30, 20, 90, 80, 15, 20 };

 

CocktailSort1<int>(array);

 

for(int i = 0; i < array.Length; i++)

{

    Console.Write(array[i]);

    Console.Write(" ");

}

----------------------------------------------------------------------------------------------------

 

■ 칵테일 정렬하기

----------------------------------------------------------------------------------------------------

using System;

 

#region 칵테일 정렬하기 1 - CocktailSort1<T>(itemArray)

 

/// <summary>

/// 칵테일 정렬하기 1

/// </summary>

/// <typeparam name="T">항목 타입</typeparam>

/// <param name="itemArray">항목 배열</param>

public void CocktailSort1<T>(T[] itemArray) where T : IComparable

{

    bool swapped;

 

    do

    {

        swapped = false;

 

        for(int i = 0; i < itemArray.Length - 1; i++)

        {

            if(itemArray[i].CompareTo(itemArray[i + 1]) > 0)

            {

                T temporaryItem = itemArray[i];

 

                itemArray[i    ] = itemArray[i + 1];

                itemArray[i + 1] = temporaryItem;

 

                swapped = true;

            }

        }

 

        if(!swapped)

        {

            break;

        }

 

        swapped = false;

 

        for(int i = 0; i < itemArray.Length - 1; i++)

        {

            if(itemArray[i].CompareTo(itemArray[i + 1]) > 0)

            {

                T temporaryItem = itemArray[i];

 

                itemArray[i    ] = itemArray[i + 1];

                itemArray[i + 1] = temporaryItem;

 

                swapped = true;

            }

        }

    }

    while(swapped);

}

 

#endregion

 

#region 칵테일 정렬하기 2 - CocktailSort2<T>(itemArray)

 

/// <summary>

/// 칵테일 정렬하기 2

/// </summary>

/// <typeparam name="T">항목 타입</typeparam>

/// <param name="itemArray">항목 배열</param>

public void CocktailSort2<T>(T[] itemArray) where T : IComparable

{

    bool swapped;

    int  start = (-1);

    int  end   = itemArray.Length - 1;

 

    do

    {

        swapped = false;

 

        start++;

 

        for(int i = start; i < end; i++)

        {

            if(itemArray[i].CompareTo(itemArray[i + 1]) > 0)

            {

                T temporaryItem = itemArray[i];

 

                itemArray[i    ] = itemArray[i + 1];

                itemArray[i + 1] = temporaryItem;

 

                swapped = true;

            }

        }

 

        if(!swapped)

        {

            break;

        }

 

        swapped = false;

 

        end--;

 

        for(int i = end; i >= start; i--)

        {

            if(itemArray[i].CompareTo(itemArray[i + 1]) > 0)

            {

                T temporaryItem = itemArray[i];

 

                itemArray[i    ] = itemArray[i + 1];

                itemArray[i + 1] = temporaryItem;

 

                swapped = true;

            }

        }

    }

    while(swapped);

}

 

#endregion

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요