简介:
插入排序的基本思想是:将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,把数组中其余n-1个数,根据数值的大小,插入到有序数组中,直至数组中的所有数有序排列为止。这样的话,n个元素需要进行n-1趟排序
具体算法描述如下:
- 将待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列;
- 取出下一个元素,在已经排序的元素序列中从后向前扫描;
- 如果该元素(已排序)大于新元素,将该元素移到下一位置;
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
- 将新元素插入到该位置后;
- 重复步骤2~5。
图片取自( https://www.cnblogs.com/lanhaicode/p/11259509.html )
代码实现:
#include <stdio.h>
int main()
{
int arr[5];
int i,j,temp;
printf("请输入5数字:\n");
//输入5个数字
for (i = 0; i < 5; i++) {
scanf_s("%d", &arr[i]);
}
printf("排序前的数组为:\n");
for (i = 0; i < 5; i++)
printf("%d,", arr[i]);
for (i = 1; i < 5; i++) {
temp = arr[i];
for (j = i - 1; j >= 0 && arr[j] > temp; j--) {
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
}
printf("排序后的数组为:\n");
for (i = 0; i < 5; i++)
printf("%d,", arr[i]);
return 0;
}