常見排序演算法之插入排序

2021-08-29 05:26:13 字數 1404 閱讀 7519

目錄

一、簡介

二、排序思路

三、演算法實現

四、原理分析

插入排序,就是假定乙個參考值,假設該參考值左邊的元素都有序,那麼從該元素開始從後往前挨個查詢,如果找到比參考值大的數,那麼就將這個大的數後移,如果未找到比參考值大的數,說明不用移動元素。迴圈比較,經過比較後移之後就會空出乙個位置,用於存放這個參考值。

插入排序對於基本有序的陣列最好用,另外插入排序也比較穩定。插入排序有點像於往前的氣泡排序演算法。

排序思路:(假設從小到大)

/**

* @description: 插入排序工具類

* @author: weishihuai

* @date: 2018/10/16 21:31

* * 原理:

* 1、從第二個元素開始迴圈遍歷,作為參考值,認定參考值左邊的元素都有序。

* 3、如果該元素(已排序)大於新元素,則將該元素移到下一位置。

* 4、重複步驟3,直到找到已排序的元素小於新元素的位置。

* 5、將新元素插入到該位置。

* 6、重複步驟2。

*/public class insertsortutils else

}array[j + 1] = temp;

system.out.println("第" + i + "趟排序後:" + arrays.tostring(array));

}return array;}}

測試:

public class test ;

system.out.println("排序前: " + arrays.tostring(array));

int arr = insertsortutils.sort(array);

system.out.println("排序後: " + arrays.tostring(arr));}}

測試結果:

下圖是對插入排序演算法每一步排序的理解以及交換思路:

插入排序,沒有利用額外的空間,所以空間複雜度是o(1),時間複雜度為o(n²),最好情況下的時間複雜度為o(n)。插入排序比氣泡排序效率高的多,比較和交換的次數都比氣泡排序少的多。

以上就是關於排序演算法的一些總結以及思路,希望對大家有所幫助。

常見排序演算法之插入排序

把陣列分為有序部分與無序部分,當乙個陣列排序時,第 0 位置上為有序部分,其餘部分為無序部分,詳細見下面 然後讓無序部分插敘有序部分,先讓有序部分最後乙個與無序部分第乙個比較,如果條件滿足 大,或者小 就交換位置,然後依次與有序部分倒數第二個繼續比較,直到不需要交換位置。這樣組成了新的有序部分與部分...

常見排序演算法 插入排序

插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。本節介紹兩種插入排序方法 直接插入排序和希爾排序。直接插入排序基本思想 1 基本思想 假設待排序的記錄存放在陣列r 1.n 中。初始時,r ...

常見的排序演算法之插入排序

排序演算法是在資料結構中十分常見的操作,每種排序演算法都有不同的特點,接下來我們學習以下常用的排序演算法 插入排序。插入排序可以分為直接插入排序和希爾排序。當插入第i i 1 個元素時,前面的array 0 array 1 array i 1 已經排好序,此時用array i 的排序碼與array ...