插入排序

插入排序

插入排序是一種簡單且穩定的算法,適用於已排好序的序列,往其餘插入某個元素,保證數據有序。 算法

思想

能夠想一下撲克牌,假如你先拿到牌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

相關文章
相關標籤/搜索