版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_37933685/article/details/84792290
个人博客:https://suveng.github.io/blog/ title: 插入排序之直接插入排序 date: 2018-12-01 19:00:00 +0800 update: 2018-12-01 19:00:00 +0800 author: suveng tags:
最坏时间复杂度 | 最优时间复杂度 | 平均时间复杂度 |
---|---|---|
O(n^2) | O(n) | O(n^2) |
O(1)
稳定
**稳定性定义:**排序前后两个相等的数相对位置不变,则算法稳定。
class InsertionSort {
public static void main(String[] args) {
System.out.println("hello,直接插入排序");
InsertSort is=new InsertSort();
int[] des=is.directInsertSort(new int[]{72,78,42,60,84,74,60,79,72,52});
for(int i=0;i<des.length;i++){
System.out.println(" "+des[i]);
}
System.out.println();
}
public int[] directInsertSort(int[] source){
int n=source.length;
//可以直接从第二个元素开始
for(int i=1;i<n;i++){
for(int j=i;j>0;j--){
if(source[j]<source[j-1]){
//异或法 交换变量,减少临时变量
source[j]=source[j]^source[j-1];
source[j-1]=source[j]^source[j-1];
source[j]=source[j]^source[j-1];
}
}
}
return source;
}
}