基础排序 - 插入排序(Java)

代码参考之java数据结构与算法第二版

 

注释为自己理解!

插入排序 由于对于插入数来说,只比较到有序中的一个,对于前面的就不在作比较,对于随机的数组来说比冒泡法快一倍,比选择排序略快。

冒泡与选择的差别在于冒泡比较后直接交换,而选择则是比较完成之后,再进行交换,所以选择的交换次数要少于冒泡,比较次数一致。

不过这三种冒泡法用大O表示法的话,效率都是O(N2 )。

下面是插入排序的算法,由于冒泡和选择我基本理解,这个稍微还有点含糊,就写出来记录一下。

 

public void insertSort(long[] array){ // i:有序部分下标 j:需要排序部分下标 int i,j; // 从第二个开始排序 for(j=1;j<array.length;j++){ //将需要排序的清空,这里只是将它存储到临时变量,并没实际清空。 long temp = array[j]; //将当前需要排序的a[j]插入到前面有序中,先把j赋值给i,以方便比较 i=j; // 如果有项比当前插入大的,则将此项放入下一项,都向后移动(重新调整空挡位),并向前继续比较,直到比插入的小,不再继续比较 while(i>0&&array[i-1]>=temp){ array[i]=array[i-1]; i--; } // 将当前项插入此空挡 array[i]=temp; } }

你可能感兴趣的:(java,数据结构,算法,存储,n2)