今天開始學Java 排序算法之插入排序

直接插入排序方法是穩定的算法,其平均時間複雜度O(n^2)

先打個預防針:

穩定排序的算法有直接插入排序、冒泡排序、歸併排序。

不穩定的排序算法有希爾排序、快速排序、簡單選擇排序和堆排序。

時間複雜度爲O(n^2)的有直接插入排序、冒泡排序、快速排序、簡單選擇排序

時間複雜度爲O(nlogn)的有堆排序和歸併排序

空間複雜度爲O(n)的是歸併排序,O(logn)是快速排序,其餘的都是O(1)

思想:先將序列中第1個記錄看成是一個有序的子序列,然後從第2個記錄起逐個進行插入,直至整個序列變成按關鍵字非遞減有序序列爲止。

廢話不多說,直接上代碼

java實現代碼:

public class InsertSort {
public void sort(int[] a){
for (int i =1;i<a.length;i++){
if(a[i]<a[i-1]){
//記錄當前位置
int index = i;
//記錄當前值
int valuse = a[i];
//依次後移
for (int j = i-1;j>0 && a[j]>valuse;j--){
a[j+1] = a[j];
index = j;
}
a[index] = valuse;
}
}
}


public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a = {1,4,2,5,3};
       InsertSort sort1 = new InsertSort();
       sort1.sort(a);
       for (int i =0;i<a.length;i++){
       System.out.print(a[i]);
       }
}


}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章