很多人都玩过扑克牌,那么我们在将扑克牌正确插入到它在牌中的正确位置的过程就是一个插入排序的插入过程,两者的原理是一模一样的,就是待插入的牌(前面的牌是已经整理好的)和它前面的牌比较,如果前一张牌比它小或相等,则就放在该位置上,如果比它大,则往前挪一张牌,此时它的位置是刚才前一张牌的位置,这时在和前一张牌比,如果还是比它大,则继续往前移动,直到它的前一张牌比它小或等于它为止。同样按从大到小排也是一样的道理。
下面来看一个C语言版本的实例:
#include "stdio.h"
#include "conio.h"
#define N 23 //N代表数组长度,C语言没有length属性,只能人为地宏定义一个参数?
void insert_sort(int A[])
{
//假设0号元素是不用比的?
int i=0,j,temp;
for(i=1;i<N;i++)
{ j=i;
while(A[j]<A[j-1])
{
temp=A[j];
A[j]=A[j-1];
A[j-1]=temp;
j--;
if(j==0){ break;}
}
}
}
main()
{ /*0号元素没有参加排序,但必须有*/
int a[N]={11,5,4,3,9,2,8,5,6,7,54,67,44,34,32,12,14,38,21,24,25,78,20},i;
insert_sort(a);
printf("insert_sort_array is already now\n");
for(i=0;i<N;i++) /*0号元素是自行添加,不需要输出*/
printf(" %d ",a[i]);
getch();
}