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); } } } }
참고 : C++ 자료구조론 - 이석호