for (int i = 0; i < n; i++)
            {
                //a[i]에서부터 a[n-1]까지의 정수 값을 검사한 결과 a[j]가 가장 작은 값이라고 하자;
                //a[i]와 a[j]를 서로교환;
            }

 

위의 코드를 완전한  C# 프로그램으로 변환하기 위해서는 두 가지 작업이 필요하다. 즉, 최소 정수를 찾는 작업과 이 최소 정수 값을 a[i]값과 교환하는 작업이다.

두번째 작업을 처리하기 위해서는 다음 코드를 사용한다.

 

temp=a[i]; a[i] = a[j]; a[j] = temp;

 

첫번째 작업에서는 먼저 최소값이 a[i]라 가정하고, a[i]를 a[i+1], a[i+2], …와 비교하여 작은 값이 나타날 때마다 그 값을 새로운 최소값으로 간주한다.

마지막으로 a[n-1]을 현재의 최소값과 비교하면 종료된다. 이런 과정을 모두 종합하면 함수 SelectSort를 얻는다.

 

C# 코드

namespace 선택정렬
{
    class Program
    {

        static void Main(string[] args)
        {
            int[] datas = new int[] { 32,12,51,2,13,12,53,10,2,3 };

            int[] result = SelectSort(datas);

            View(result);

            Console.ReadKey();
        }

        /// <summary>
        /// 선택정렬을 수행한다.
        /// </summary>
        /// <param name="datas"></param>
        /// <returns></returns>
        private static int[] SelectSort(int[] datas)
        {
            for (int i = 0; i < datas.Length; i++)
            {
                for (int j = i+1; j < datas.Length; j++)
                {
                    if (datas[i] > datas[j])
                    {
                        int temp = datas[j];
                        datas[j] = datas[i];
                        datas[i] = temp;
                    }
                }
            }
            return datas;
        }

        /// <summary>
        /// 화면에 출력한다.
        /// </summary>
        /// <param name="result"></param>
        private static void View(int[] result)
        {
            foreach (var data in result)
            {
                Console.Write("{0} ", data);
            }
        }
    }
}


 

선택정렬.zip

 

 

참고 : C++ 자료구조론 - 이석호

'.Net > Algorithm' 카테고리의 다른 글

C# 순열  (2) 2012.10.10
C# 이진탐색  (0) 2012.10.10

+ Recent posts