C#/C#200제

[C#] 15일차 - 105. 배열을 내림차순으로 정렬하는 방법

반나무 2021. 2. 13. 19:21

1. 오름차순으로 정렬 후 내용을 뒤집으면 된다.

int[] arr = {12, 32, 43, 24, 8};
Array.Sort(arr);	// 오름차순으로 정렬
Array.Reverse(arr); // 배열의 내용을 뒤집어줌

2. Sort() 메소드의 IComparer 인터페이스를 구현해준다.


using System;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace A105_IComparer
{
    public class ReverseComparer : IComparer
    {
        public int Compare(object x, object y)
        {
            string s1 = (string)x;
            string s2 = (string)y;
            return string.Compare(s2, s1);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            string[] animalsEn = { "dog", "cow", "rabbit", "goat", "sheep", "mouse", "horse", "deer" };
            string[] animalsKo = { "개", "소", "토끼", "염소", "양", "쥐", "말", "사슴" };

            Display("초기 배열", animalsEn);
            Array.Sort(animalsEn);
            Array.Reverse(animalsEn);
            Display("Sort후 reverse", animalsEn);

            Display("초기 배열", animalsKo);
            Array.Sort(animalsKo, 2, 3);
            Display("[2]에서 3개 정렬 후", animalsKo);

            IComparer revComparer = new ReverseComparer(); 

            Array.Sort(animalsKo, revComparer); // revComparer를 사용해 내림차순 정렬함
            Display("내림차순 정렬", animalsKo);
        }

        private static void Display(string comment, string[] arr)
        {
            Console.WriteLine(comment);
            for(int i = arr.GetLowerBound(0); i <= arr.GetUpperBound(0); i++)
            {
                Console.Write(" {0}", arr[i]);
            }
            Console.WriteLine();
            Console.WriteLine();
        }
    }
}

반응형