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