关于插入排序其原理很简单,像起扑克牌一样。但是在实现上需要注意一些细节,下面用C语言来实现插入排序算法:
int main(){
int a[14]={100,20,32,23,56,48,23,14,56,74,147,99877,5142,36}; //一个有14个元素的数组
int i,k,cur; // 其中cur是指当前要插入的那个数字,显然我们需要从第二个数字开始插入
for(i=1;i<14;i++){
cur = a[i];//当前要插入的数字
j = i - 1;//获得要插入数字的前一个数字
while(a[j]>cur&& j>=0){
a[j+1] = a[j];//如果a[j]大于当前要插入的数字,其要向后移动一下
j--;//继续与其它的已经排好序数字们比较,看看这些数字有没有比当前要插入的数字大的
}
if(j!=(i-1)){
a[j+1] = cur; // 如果第i个数字比前面的都大,不需要重新插入
}
}
for(i=0;i<14;i++) /*输出排序后的结果*/ { printf("%4d, ",a[i]); }
return 0;
}
注意处理边界情况