一. 引言
關于排序法算法其實有很多種,例如簡單的有冒泡排序、選擇排序,復雜一些的有快速排序、插入排序等,今天小編就給大家講解一下插入排序的實現過程。
二. 排序分析
插入排序,顧名思義就是每次排序時都是對插入的數據進行排列。例如,下面平哥給大家舉個例子:
我們這里有一個數組,內部元素有3、1、5、2,如下圖所示:
根據上圖,我們可以總結出排序過程:
1. 第一輪比較,先拿前兩個數進行比較,較大的放右邊。3和1比較后,需要進行交換,變為了1、3;
2. 第二輪比較,插入元素5,與排好序的右邊的數進行比較,也就是3和5比較。比較的結果是,新插入的值,比排好序的兩個數中的最大值還要大,所以不用交換;
3. 第三輪比較,插入元素2,與排好的1、3、5進行比較。先從5開始,2比5小,將2和5交換;然后2再和前面的3比較,結果2比3小,繼續交換;然后2再和前面的1比較,結果比1大,不用交換。最終我們確定排序的位置為:1-2-3-5。
通過以上這三輪的比較,我們可以得出一個結論:
4個元素進行比較,需要比較3輪。擴展來說,如果有n個元素,則需要比較n-1輪。而每一輪需要進行比較的次數,最多每輪比較n-1次,且只要把新插入的數,比已經排好序的最大數還要大,則直接退出該輪比較。
三. 代碼實現
根據上面的理論描述,我們可以把上面的排序分析轉換成行和列的排序過程,使用循環嵌套,利用如下代碼進行實現插入排序:
現在你知道利用Java怎么實現插入排序了嗎?