11月热门下载资源TOP100强力推荐! 点击了解英特尔云计算
漫谈经典排序算法:二、各种插入排序解析及性能比较
分类: Data Structures And Algorithms2011-09-17 09:55700人阅读评论(0)收藏举报
1、序言
这是《漫谈经典排序算法系列》第二篇,解析了各种插入排序算法。主要包括:直接插入排序、折半插入排序、表插入排序、希尔插入排序。每一种算法的开头都叙述了引出该算法的原因,然后给出代码,最后分析算法效率及和其他插入排序相比,优劣在哪里。
各种排序算法的解析请参考如下:
《漫谈经典排序算法:一、从简单选择排序到堆排序的深度解析》 《漫谈经典排序算法:二、各种插入排序解析及性能比较》 《漫谈经典排序算法:三、冒泡排序 && 快速排序》 《漫谈经典排序算法:四、归并排序》
《漫谈经典排序算法:五、线性时间排序(计数、基数、桶排序)》 《漫谈经典排序算法:六、各种排序算法总结》
注:为了叙述方便,本文以及源代码中均不考虑A[0],默认下标从1开始。
2、直接插入排序
2.1 引出
给定待排序序列A[ 1.....n ],现假设A[1...i]已经有序,那么我们取出A[i+1]插入到序列A[1...i].这样有序序列记录数就增加了1.如此重复上述操作,不断取出记录插入有序序列,直到A[n]插入到有序序列,排序完成。
2.2 代码
view plaincopy to clipboardprint?
1. //直接插入排序
2. void straightInsertSort(int *a,int n) 3. { 4. int i,j; 5. int temp;
6. //逐个记录插入有序序列 7. for(i=2;i<=n;i++){ 8. temp=a[i];
9. //把a[i]插入有序序列