Excel不相邻列如何打印在一起-英雄云拓展知识分享
132
2023-10-25
【摘要】 本书摘自《Java语言程序设计与应用》一书中第3章,第6节,由徐俊武编著。
3.6.3 插入排序
基本思想:直接插入排序的基本操作是将一个记录插入已经排好的有序表 中,从而得到一个新的、记录数增1的有序表。对于给定的一组记录,初始时假 定第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开 始,按照记录的大小依次将当前处理的记录插入其之前的有序序列中,直到最后 一个记录插到有序序列中为止。
复杂度分析:最好的情况,也就是要排序的表本身就是有序的,此时只有数 据比较,没有数据移动,时间复杂度为 O(n)。 最坏的情况,即待排序的表是逆序 的情况,此时需要比较的次数为:2+3+ …+n=(n+2)(n-1)/2 次,而记录移 动的最大值也达到了 (n+4)(n-1)/2 次。如果排序记录是随机的,那么根据 概率相同的原则,平均比较和移动次数约为 n²/4 次,因此,得出直接插入排序法 的时间复杂度为 O(n²)。 从这里可以看出,同样的是时间复杂度 O(n²), 直接插 入排序法比冒泡和简单选择排序的性能要好一些。
排序过程如下:
以数组{38,65,97,76,13,27,49}为例
第一趟:[38]659776132749
第二趟:[3865]9776132749
第三趟:[386597]76132749
第四趟:[38657697]132749
第五趟:[1338657697]2749
第六趟:[132738657697]49第七趟:[13273849657697]
最后排序结果:
13273849657697
代码实现如下:
public class InsertSort {
public static void insertSort(int[] a){
int i,j,insertNote; //要插入的数据
for (i=1;i //从数组的第二个元素开始循环将数组中的元素插入 insertNote=a[i]; //设置数组中的第2个元素为第一次循环要插入的数据 j=i- 1;
发表评论
暂时没有评论,来抢沙发吧~