插入排序算法的原理
有一个很形象的比喻,每次从牌堆里抽一张新牌时,左手一般拿着的是已经排好序的旧牌,有新牌来的时候,会不由自主的从右到左的插入进去.后续的牌按照这个规律下去,最后左手的牌都是排好序了.
现在用程序语言的角度来说明插入排序
原理.
- 从数组的第二位开始loop,这是外loop
- 开启一个内loop,依次检查外loop当前数组值的左侧,如果比当前数组值大,则左侧值向右移动,直到碰到比当前值小的或者内loop结束,此时把当前值放入 左侧留下的空位.
下面是C 实现的完整代码
#include <stdio.h>
void insertSort(int *, int);
int main()
{
int i, n;
int num[10];
while(scanf("%d", &n) != EOF)
{
//接收无序数据
for(i = 0; i < n; i ++)
{
scanf("%d",num + i);
}
//快速排序
insertSort(num, n);
//打印输出
for(i = 0; i < n; i ++)
{
printf("%d ",num[i]);
}
printf("\n");
}
return 0;
}
void insertSort(int *array, int len)
{
int i, j, temp;
for(i = 1; i < len; i ++)
{
temp = array[i];
for(j = i - 1; j >= 0; j --)
{
if(array[j] > temp)
{
array[j + 1] = array[j];
}else
{
break;
}
}
array[j + 1] = temp;
}
}
运行实例
此处使用gcc
编译,命令如下
gcc -o insertsort insertsort.c
最后直接在命令行里输入insertsort.exe
即可.
时间: 2024-12-29 10:04:03