C# 삽입 정렬

2023. 7. 22. 20:14알고리즘 공부

삽입 정렬은 먼저 첫번째 인덱스 숫자는 정렬이 됬다고 치고 다음 인덱스와 아까 정렬이 완료된 인덱스와

비교를 해가지고 더 작으면 옮기는식인 알고리즘이다.

만약에 5번째 인덱스에서 4번째 인덱스와 비교를했을때 더 작으면 위치가 교환이 되고 다시 3번째 인덱스와

비교를 하고 더 크면 4번째 인덱스에 저장이 되는식으로 정렬이 되는것이다.

그렇게 끝까지 정렬이 완료되면 오름차순으로 정렬이 된다.

 

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

namespace 삽입_정렬
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int[] a = new int[n];

            string[] arr = Console.ReadLine().Split();
            for (int i = 0; i < a.Length; i++)
            {
                a[i] = int.Parse(arr[i]);
            }

            for (int i = 0; i < a.Length; i++)
            {
                if(i == 0)
                {
                    continue;
                }
                if(a[i] < a[i - 1])
                {
                    Program.Swap(ref a[i],ref a[i - 1]);
                    i -= 2;
                }
            }

            foreach (int b in a)
            {
                Console.Write($"{b} ");
            }

            
        }

        static void Swap(ref int a, ref int b)
        {
            int temp;
            temp = a;
            a = b;
            b = temp;
        }

       
    }
}

이번에는 Swap함수에다 인자값을 넣어 호출이 되는식으로 코드를 짜봤다.

Main함수에다 함수를 넣는게 더 편하겠지만 Program 클래스에서 함수를 만들었다.

이렇게하면 내가 크기를 지정하고 그 안에 숫자들을 입력하면 오름차순으로 정렬이 된다.

 

 

 

 

'알고리즘 공부' 카테고리의 다른 글

C# BFS 너비우선탐색  (0) 2023.08.15
C# 힙 정렬  (0) 2023.07.25
C# 선택 정렬  (0) 2023.07.21
C# 버블 정렬  (0) 2023.07.21
내가 이해한 대로 글을 쓰는 데이터 구조  (0) 2023.07.21