1. 程式人生 > 程式設計 >插入排序

插入排序

插入排序

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

思想

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

穩定性分析

相同的兩個元素不存在相對順序的互換比如4,3,5,7,3 第一個三會插入到4的前面,第二個三並不會受第一個三順序的影響

更多推薦

歸併排序詳解

快速排序詳解

選擇排序詳解