插入排序的原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。跟对于纸牌排序一样。
void print_arr(int a[], int n)
{
for (int i = 0;i < n;i++)
{
printf("%d ", a[i]);
}
printf("\n");
}
void insertion(int arr[], int n)
{
print_arr(arr, n);
for (int i = 1;i < n;i++)
{
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key)
{
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
print_arr(arr, n);
}
}
int main()
{
int arr[100];
int n = 0;
scanf("%d", &n);
for (int i = 0;i < n;i++)
{
scanf("%d", &arr[i]);
}
insertion(arr, n);
return 0;
}