直接插入排序方法是穩定的算法,其平均時間複雜度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]);
}
}
}