배열을 이용한 내림차순 정렬 알고리즘

2016. 12. 20. 12:44C# 콘솔( Console )/예제

ex) 배열을 이용한 내림차순 정렬 알고리즘


        static void Main(string[] args)

        {

            Console.WriteLine("오름차순 정렬 프로그램");

            int[] arr = { 5, 7, 1, 4, 8, 9, 10, 2, 3, 6 };

            int first_num = 0, second_num = 0;


            for (first_num = 0; first_num < arr.Length; first_num++)

            {                

                for (second_num = 0; second_num < arr.Length; second_num++)

                {

                    if(arr[first_num]<arr[second_num])

                    {

                        Console.Write("\n기준 : arr[{0}]\t비교 : arr[{1}]\n", first_num, second_num);

                        Console.Write("swap전 : ");

                        foreach (int arr2 in arr)

                        {

                            Console.Write("{0} ", arr2);

                        }


                        swap(ref arr[first_num], ref arr[second_num]);


                        Console.Write("\nswap후 : ");

                        foreach (int arr2 in arr)

                        {

                            Console.Write("{0} ", arr2);

                        }

                        Console.WriteLine();

                    }

                }                

            }

        }


        static void swap(ref int num1, ref int num2) 

        {

            int temp = num1;

            num1 = num2;

            num2 = temp;

        }

 


해설)



1. int[] arr = { 5, 7, 1, 4, 8, 9, 10, 2, 3, 6 };

  -> arr 변수명을 가지고 크기가 10인 정수형 배열을 선언 후 값을 지정하여 초기화하였습니다.


2. int first_num = 0, second_num = 0;

  -> 기준값을 저장할 변수는 정수형이고 first_num 변수명가지고, 비교값을 저장할 변수는 정수형이고 second_num 변수명으로 선언 후 초기화하였습니다.


3. 기준값을 정의할 반복문 for()문 ( for (first_num = 0; first_num < arr.Length; first_num++) )

  -> 초기값 ( first_num = 0 ) : 배열의 Index를 처음부터 시작하기위해 0으로 초기화하였습니다.

  -> 조건값 ( first_num < arr.Length ) : 배열의 Index값이 arr배열의 크기보다 작을 때 for()문이 실행하하도록 설정하였습니다.

  -> 증감값 ( first_num++ ) : for()문이 실행 후 기준값을 변경하기위해 배열의 Index값을 1증가시켰습니다.


4. 비교값을 정의할 반복문 for()문 ( for (second_num = 0; second_num < arr.Length; second_num++) )

  -> 초기값 ( second_num = 0 ) : 배열의 Index를 처음부터 시작하기위해 0으로 초기화하였습니다.

  -> 조건값 ( second_num < arr.Length ) : 배열의 Index값이 arr배열의 크기보다 작을 때 for()문이 실행하하도록 설정하였습니다.

  -> 증감값 ( second_num++ ) : for()문이 실행 후 비교값을 변경하기위해 배열의 Index값을 1증가시켰습니다.


5. 중첩 for()문의 실행

중첩반복문


6. 기준값을 비교값과 비교 ( if(arr[first_num]<arr[second_num]) )

  -> 기준값이 비교값보다 작으면 swap함수를 실행하게됩니다.


7. foreach

foreach


8. swap함수 ( swap(ref arr[first_num], ref arr[second_num]) )

메소드를 이용한 Swap메소드 ( Call By Reference )