java實現(xiàn)的幾個常用排序算法詳細(xì)解讀

java實現(xiàn)的幾個常用排序算法詳細(xì)解讀

ID:26369709

大小:46.18 KB

頁數(shù):9頁

時間:2018-11-26

java實現(xiàn)的幾個常用排序算法詳細(xì)解讀_第1頁
java實現(xiàn)的幾個常用排序算法詳細(xì)解讀_第2頁
java實現(xiàn)的幾個常用排序算法詳細(xì)解讀_第3頁
java實現(xiàn)的幾個常用排序算法詳細(xì)解讀_第4頁
java實現(xiàn)的幾個常用排序算法詳細(xì)解讀_第5頁
資源描述:

《java實現(xiàn)的幾個常用排序算法詳細(xì)解讀》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、Java實現(xiàn)的幾個常用排序算法詳細(xì)解讀排序算法很多地方都會用到,近期又重新看了一遍算法,并自己簡單地實現(xiàn)了一遍,特此記錄下來,為以后復(fù)習(xí)留點材料。廢話不多說,下面逐一看看經(jīng)典的排序算法:1.選擇排序選擇排序的基本思想是遍歷數(shù)組的過程中,以i代表當(dāng)前需要排序的序號,則需要在剩余的[i…n-1]中找出其中的最小值,然后將找到的最小值與i指向的值進(jìn)行交換。因為每一趟確定元素的過程中都會有一個選擇最大值的子流程,所以人們形象地稱之為選擇排序。舉個實例來看看:1.初始:[38,17,16,16,7,31,39,32,2,11]2.3.i=0:[2,17,1

2、6,16,7,31,39,32,38,11](0th[38]<->8th[2])4.5.i=1:[2,7,16,16,17,31,39,32,38,11](1st[38]<->4th[17])6.7.i=2:[2,7,11,16,17,31,39,32,38,16](2nd[11]<->9th[16])8.9.i=3:[2,7,11,16,17,31,39,32,38,16](無需交換)10.11.i=4:[2,7,11,16,16,31,39,32,38,17](4th[17]<->9th[16])12.13.i=5:[2,7,11,16,16

3、,17,39,32,38,31](5th[31]<->9th[17])14.15.i=6:[2,7,11,16,16,17,31,32,38,39](6th[39]<->9th[31])16.17.i=7:[2,7,11,16,16,17,31,32,38,39](無需交換)18.19.i=8:[2,7,11,16,16,17,31,32,38,39](無需交換)20.21.i=9:[2,7,11,16,16,17,31,32,38,39](無需交換)由例子可以看出,選擇排序隨著排序的進(jìn)行(i逐漸增大),比較的次數(shù)會越來越少,但是不論數(shù)組初始是否

4、有序,選擇排序都會從i至數(shù)組末尾進(jìn)行一次選擇比較,所以給定長度的數(shù)組,選擇排序的比較次數(shù)是固定的:1+2+3+….+n=n*(n+1)/2,而交換的次數(shù)則跟初始數(shù)組的順序有關(guān),如果初始數(shù)組順序為隨機(jī),則在最壞情況下,數(shù)組元素將會交換n次,最好的情況下則可能0次(數(shù)組本身即為有序)。由此可以推出,選擇排序的時間復(fù)雜度和空間復(fù)雜度分別為O(n2)和O(1)(選擇排序只需要一個額外空間用于數(shù)組元素交換)。實現(xiàn)代碼:1./**2.*SelectionSorting3.*/4.SELECTION(newSortable(){5.public

5、sComparable>voidsort(T[]array,booleanascend){6.intlen=array.length;7.for(inti=0;i

6、);17.}18.}19.})2.插入排序插入排序的基本思想是在遍歷數(shù)組的過程中,假設(shè)在序號i之前的元素即[0..i-1]都已經(jīng)排好序,本趟需要找到i對應(yīng)的元素x的正確位置k,并且在尋找這個位置k的過程中逐個將比較過的元素往后移一位,為元素x“騰位置”,最后將k對應(yīng)的元素值賦為x,插入排序也是根據(jù)排序的特性來命名的。以下是一個實例,紅色標(biāo)記的數(shù)字為插入的數(shù)字,被劃掉的數(shù)字是未參與此次排序的元素,紅色標(biāo)記的數(shù)字與被劃掉數(shù)字之間的元素為逐個向后移動的元素,比如第二趟參與排序的元素為[11,31,12],需要插入的元素為12,但是12當(dāng)前并沒有處于正確

7、的位置,于是我們需要依次與前面的元素31、11做比較,一邊比較一邊移動比較過的元素,直到找到第一個比12小的元素11時停止比較,此時31對應(yīng)的索引1則是12需要插入的位置。1.初始:[11,31,12,5,34,30,26,38,36,18]2.3.第一趟:[11,31,12,5,34,30,26,38,36,18](無移動的元素)4.5.第二趟:[11,12,31,5,34,30,26,38,36,18](31向后移動)6.7.第三趟:[5,11,12,31,34,30,26,38,36,18](11,12,31皆向后移動)8.9.第四趟:[5

8、,11,12,31,34,30,26,38,36,18](無移動的元素)10.11.第五趟:[5,11,12,30,31,34,26,3

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。