C#/C#200제

[C#] 15일차 - 106. 두 개의 배열을 쌍으로 정렬

반나무 2021. 2. 13. 19:50
Sort(Array, Array);				// (1)
Sort(Array, Array, IComparer);			// (2)
Sort(Array, Array, Int32, Int32);		// (3)
Sort(Array, Array, Int32, Int32, IComparer);	// (4)

(1) : 앞에 있는 배열을 기준으로 두 개의 배열을 오름차순 정렬합니다.

정렬 기준은 첫번째 배열의 값이고 두번째 배열은 첫번째 배열의 정렬 순서에 따라 정렬됩니다.

 

(2) : (1)번과 같이 정렬하지만 IComparer에 의해 순서가 결정됩니다.

 

(3), (4) : 배열의 전체가 아닌, 배렬의 일부를 정렬할 때 사용됩니다.

 


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

namespace A106_SortArrayPair
{
    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" };
            string[] animalsKo = { "개", "소", "토끼", "염소", "양", "쥐" };
            Display("정렬 전", animalsEn, animalsKo);

            Array.Sort(animalsEn, animalsKo);
            Display("정렬 후", animalsEn, animalsKo);

            IComparer revCom = new ReverseComparer();
            Array.Sort(animalsEn, animalsKo, revCom);
            Display("내림차순 정렬 후", animalsEn, animalsKo);
        }

        static void Display(string cmt, string[] a1, string[] a2)
        {
            Console.WriteLine(cmt);
            for(int i=0; i<a1.Length; i++)
            {
                Console.WriteLine(" [{0}]: {1,-8} {2,-8}", i, a1[i], a2[i]);
            }
            Console.WriteLine();
        }
    }
}

반응형