C#

011_버블정렬

iwannabebackendexpert 2022. 3. 15. 22:38
static void Main(string[] args)
        {
            Random r = new Random();
            int[] sort = new int[10];
            for (int i = 0; i < 10; i++) sort[i] = r.Next(1,101); //랜덤값 저장
            Console.Write("Before Sorting : ");
            for (int i = 0; i < 10; i++) Console.Write("{0} ",sort[i]);
            Console.WriteLine();

            int n = 10; //배열의 길이
            int tmp;
            for (int i = 0; i < n; i++) // i회전
            {
                for (int j = 0; j < n - (i + 1); j++) //순회할 원소의 개수만큼 loop
                               /*조건이 [ j < n - (i + 1) ]인 이유:
                                버블정렬 특성상 1회전마다 가장 큰 수는 정렬이 되어있게 된다.*/
                                
                               /* 1회전마다 탐색할 원소의 개수 n(배열 개수) - i(회전 수) 이다.
                                 위 코드에서 i + 1 인 이유는 j = 0 부터 시작하기 때문이다. */
                {
                    if (sort[j] > sort[j + 1])
                    {
                        tmp = sort[j + 1];
                        sort[j + 1] = sort[j];
                        sort[j] = tmp;
                    }
                }
            }
            Console.Write("After Sorting : ");
            for (int i = 0; i < sort.Length; i++) Console.Write("{0} ", sort[i]);
            Console.WriteLine();        
        }

주석에도 달아놓았지만 한번 더 서술함.

※조건이 [ j < n - i ]인 이유:
                    버블정렬 특성상 1회전마다 가장 큰 수는 정렬이 되어있게 된다.
                    그래서 1회전마다 순회할 원소의 개수가 줄어든다.
                  

1회전마다 탐색할 원소의 개수 n(배열 개수) - i(회전 수) 이다.

위 코드에서 i + 1 인 이유는 배열을 이용하기 때문에

j = 0 부터 시작한다

 

그리고 sort 배열의 인덱스 끼리 비교하고 tmp변수를 이용해 swap을 진행.

'C#' 카테고리의 다른 글

013_PyramidMethod  (0) 2022.03.15
012_Larger  (0) 2022.03.15
010_Array  (0) 2022.03.15
009_Pyramid  (0) 2022.03.15
008_Prime  (0) 2022.03.15