C++ 문법
[C] 삽입 정렬
simstealer
2023. 1. 25. 13:38
#include <stdio.h>
#include <string.h>
void InsertionSort(int DataSet[], int Length)
{
int i = 0;
int j = 0;
int value = 0;
// 삽입 소트는 인덱스 1부터 시작하기 때문에 i = 1이라고 주었다.
for (i = 1; i < Length; i++)
{
if (DataSet[i - 1] <= DataSet[i])
{
continue;
}
value = DataSet[i];
for (j = 0; j < i; j++)
{
if (DataSet[j] > value)
{
// memmevo는 동적메모리를 sizeof 만큼 만들어서 sizeof만큼의 값을 저장하고 dest 주소로 옮긴다.
memmove(&DataSet[j + 1], &DataSet[j], sizeof(DataSet[0]) * (i - j));
DataSet[j] = value;
break;
}
}
}
}
int main()
{
/*삽입 정렬
1. 앞쪽 수와 현재 수를 비교해서 현재 수가 크면 countinue.
2. 작다면 현재 수를 변수에 저장한다.
3. 큰 값들을 뒤로 옮기고 변수 값을 저장한다.
*/
int DataSet[] = { 6, 4, 2, 3, 1, 5 };
int Length = sizeof(DataSet) / sizeof(DataSet[0]);
int i = 0;
InsertionSort(DataSet, Length);
for (int i = 0; i < Length; i++)
{
printf("%d", DataSet[i]);
}
printf("\n");
return 0;
}