C# - Int 배열 정렬 (오름차순, 내림차순)

int[] 배열을 오름차순 또는 내림차순으로 정렬하는 방법을 소개합니다.

1. Array.Sort()를 이용한 방법

1.1 오름차순

Array.Sort()는 인자로 전달된 배열을 오름차순으로 전달하며, 원본 배열의 순서를 변경합니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int[] arr = {5, 10, 2, 4, -5, -8};

            Array.Sort(arr);
            Console.WriteLine(string.Join(", ", arr));
        }
    }
}

Output:

-8, -5, 2, 4, 5, 10

1.2 내림차순 : Array.Reverse()를 이용한 방법

가장 간단한 방법은, 오름차순으로 정렬된 배열을 Array.Reverse()로 순서를 반대로 바꾸면 내림차순 정렬이 됩니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int[] arr = {5, 10, 2, 4, -5, -8};

            Array.Sort(arr);
            Array.Reverse(arr);
            Console.WriteLine(string.Join(", ", arr));
        }
    }
}

Output:

10, 5, 4, 2, -5, -8

1.3 내림차순 : Comparison을 이용한 방법

Comparison은 정렬할 때 요소들을 어떻게 비교할지에 대한 구현 내용들을 갖고 있습니다. Comparison을 변경하여 Array.Sort()가 배열을 정렬할 때 내림차순으로 정렬되도록 만들 수 있습니다.

Array.Sort()의 두번째 인자로 Comparison을 전달할 수 있으며, 요소들의 비교할 때 반대로 비교하도록 구현하면 내림차순으로 정렬하게 됩니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int[] arr = {5, 10, 2, 4, -5, -8};

            Array.Sort(arr,
                    new Comparison<int>((n1, n2) => n2.CompareTo(n1)));
            Console.WriteLine(string.Join(", ", arr));
        }
    }
}

Output:

10, 5, 4, 2, -5, -8

2. array.OrderBy()를 이용한 방법

2.1 오름차순

array.OrderBy()는 배열의 요소들을 오름차순으로 정렬하고, 정렬된 요소들을 새로운 배열로 리턴합니다. 즉, 원본 요소의 순서는 변경되지 않습니다.

아래와 같이 OrderBy()를 사용하여 오름차순으로 정렬할 수 있습니다. OrderBy()의 함수로 전달되는 것은 정렬할 때 요소의 어떤 것을 key로 사용하지에 대한 내용입니다. int 자체를 key로 사용할 것이기 때문에 i => i를 전달하면 됩니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int[] arr = {5, 10, 2, 4, -5, -8};

            int[] sorted = arr.OrderBy(i => i).ToArray();
            Console.WriteLine(string.Join(", ", sorted));
        }
    }
}

Output:

-8, -5, 2, 4, 5, 10

2.2 내림차순

OrderByDescending()는 배열을 내림차순으로 정렬하며, OrderBy()와 동일하게 방식으로 동작합니다.

아래와 같이 배열을 내림차순으로 정렬할 수 있습니다.

using System;

namespace Example {
    public class Program {
        public static void Main(string[] args) {

            int[] arr = {5, 10, 2, 4, -5, -8};

            int[] sorted = arr.OrderByDescending(i => i).ToArray();
            Console.WriteLine(string.Join(", ", sorted));
        }
    }
}

Output:

10, 5, 4, 2, -5, -8
Loading script...
codechachaCopyright ©2019 codechacha