插入排序是一種簡單且穩定的算法,適用於已排好序的序列,往其餘插入某個元素,保證數據有序。 算法
能夠想一下撲克牌,假如你先拿到牌1,5,9 而後你又起了一個8這時候你須要和1,5,9比較而後把8插入到5,9的中間讓它成爲有序的1,5,8,9 詳細看下面動圖。 在數組的操做中,因爲數組並不像手那麼靈活,每次插入操做都須要移動元素。 數組
public void insertSort(int a[]){
for(int i=1;i<a.length;i++){
//和前面的依次比較
for(int j=i;j>0;j--){
if(a[j]<a[j-1]){
int temp=a[j];
a[j]=a[j-1];
a[j-1]=temp;
}
}
}
}
複製代碼
空間複雜度O(1) 時間複雜度外層循環n次 內層循環(1+2+3+....+i+....+n)因此複雜度是n的平放 最優的時間複雜度O(n)bash
相同的兩個元素不存在相對順序的互換好比4,3,5,7,3 第一個三會插入到4的前面,第二個三並不會受第一個三順序的影響spa
歸併排序詳解code
快速排序詳解cdn
選擇排序詳解blog