十三、自己動手實現排序算法(1)------------“ Insertion Sort 插入排序 ”

參考文章:

https://www.cnblogs.com/guoyaohua/p/8600214.html                  十大經典排序算法最強總結(含JAVA代碼實現)

https://blog.csdn.net/hellozhxy/article/details/79911867                十大經典排序算法最強總結

https://blog.csdn.net/liupeifeng3514/article/details/83302599


插入排序分析:

平均時間複雜度 最好情況 最壞情況 空間複雜度 排序方式 穩定性
O(n^2) O(n) O(n^2) O(1) In-place 穩定

插入排序的原理:

         插入排序(Insertion-Sort)的算法描述是一種簡單直觀的排序算法。它的工作原理是通過構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,通常採用 in-place(原狀) 排序(即只需用到 O(1) 的額外空間的排序),因而在從後向前掃描過程中,需要反覆把已排序元素逐步向後挪位,爲最新元素提供插入空間。

原理圖:(引用自參考文章

 

Java 代碼實現:

      public static  int[] insertionSort(int[] array){
		if(array.length == 0) 
			return array;
		for(int i=0; i<array.length-1; i++){
			int current = array[i+1];
			int preIndex = i;
			while(preIndex >=0 && current < array[preIndex]){
				array[preIndex+1] = array[preIndex];
				preIndex--;
			}
			array[preIndex+1] = current;
		}
		return array;
	}

 

 

插入排序測試:

 

 

 

 

 

 

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