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 |