C#에서 배열을 내림차순(큰 값부터 작은 값 순서)으로 정렬하는 방법을 소개합니다. 별도의 라이브러리 없이 기본적인 비교와 교환(swap) 연산만으로도 손쉽게 구현할 수 있습니다.
1단계: 배열 초기화
먼저 정렬할 배열을 선언하고 초기화합니다.
int[] myArr = new int[5] {98, 76, 99, 32, 77};2단계: 요소 비교 후 교환
배열의 첫 번째 요소를 나머지 요소들과 하나씩 비교하여 가장 큰 값을 찾아 맨 앞으로 이동시킵니다. 이 과정을 반복하면 두 번째로 큰 값, 세 번째로 큰 값이 차례대로 제자리에 배치됩니다.
if(myArr[i] < myArr[j]) {
temp = myArr[i];
myArr[i] = myArr[j];
myArr[j] = temp;
}위 조건문에서 myArr[i]가 myArr[j]보다 작으면 두 요소의 자리를 서로 교환하여 더 큰 값이 항상 앞쪽에 오도록 합니다. 변수 i와 j는 처음에 다음과 같이 설정됩니다.
i = 0;
j = i + 1;
전체 예제 코드
아래 전체 코드를 실행하면 배열이 내림차순으로 정렬되는 과정을 확인할 수 있습니다.
using System;
public class Demo {
public static void Main() {
int[] myArr = new int[5] {98, 76, 99, 32, 77};
int i, j, temp;
Console.Write("Elements: \n");
for(i=0;i<5;i++) {
Console.Write("{0} ",myArr[i]);
}
for(i=0; i<5; i++) {
for(j=i+1; j<5; j++) {
if(myArr[i] < myArr[j]) {
temp = myArr[i];
myArr[i] = myArr[j];
myArr[j] = temp;
}
}
}
Console.Write("\nDescending order:\n");
for(i=0; i<5; i++) {
Console.Write("{0} ", myArr[i]);
}
Console.Write("\n\n");
}
}
실행 결과
Elements:
98 76 99 32 77
Descending order:
99 98 77 76 32
참고: Array.Sort와 Array.Reverse 활용
정렬 로직을 직접 구현하지 않고 .NET에서 제공하는 내장 메서드를 사용하는 방법도 있습니다. Array.Sort()로 오름차순 정렬한 뒤 Array.Reverse()로 순서를 뒤집으면 내림차순 정렬이 완성됩니다.
Array.Sort(myArr);
Array.Reverse(myArr);
이 방식은 코드가 간결하고 내부적으로 최적화되어 있어 실무에서 널리 사용됩니다. 다만 정렬 알고리즘의 동작 원리를 학습하는 단계에서는 위의 수동 구현 방식을 먼저 이해해 두는 것이 좋습니다.