shell排序怎么排 Shell排序的算法步驟?
Shell排序的算法步驟?Hill Shell sort是一種插入排序算法,以d.l.Shell命名。Shell排序也稱為縮減增量排序。首先,取一個(gè)小于n的整數(shù)D1作為第一個(gè)增量,將文件的所有記錄分成
Shell排序的算法步驟?
Hill Shell sort是一種插入排序算法,以d.l.Shell命名。Shell排序也稱為縮減增量排序。首先,取一個(gè)小于n的整數(shù)D1作為第一個(gè)增量,將文件的所有記錄分成D1組。距離是DL的倍數(shù)的所有記錄都放在同一組中。首先在每個(gè)組中進(jìn)行直接插入排序;然后,第二個(gè)增量D2
Shell排序算法嚴(yán)格基于插入排序的思想,也稱為希爾排序或縮減增量排序。shell排序算法的排序過(guò)程如下:(1)將n個(gè)元素的數(shù)組劃分為n/2個(gè)數(shù)字序列,第一個(gè)數(shù)據(jù)和n/21個(gè)數(shù)據(jù)為一對(duì)(2)一個(gè)循環(huán)使每個(gè)序列對(duì)有序。(3) 然后,它變成n/4序列并再次排序。(4) 不斷重復(fù)上述過(guò)程,隨著順序的減少,最終變?yōu)橐粋€(gè),整個(gè)排序完成。為了更好地理解shell排序算法的執(zhí)行過(guò)程,我們以實(shí)際數(shù)據(jù)為例,逐步實(shí)現(xiàn)shell排序算法。六個(gè)整數(shù)數(shù)據(jù)127、118、105、101、112和100是一組無(wú)序數(shù)據(jù)。外殼排序算法的執(zhí)行過(guò)程(1)第一排序,首先將陣列劃分為6/2=3個(gè)數(shù)字序列,第一數(shù)據(jù)127和第四數(shù)據(jù)ll 01成對(duì),第二數(shù)據(jù)118和第五數(shù)據(jù)112成對(duì),第三數(shù)據(jù)105和第六數(shù)據(jù)100成對(duì)。每對(duì)的排序數(shù)據(jù)是101、112、100、127、118、105。(2) 在第二次排序中,數(shù)組被分成6/4=1序列(這里執(zhí)行舍入操作)。此時(shí),逐個(gè)比較數(shù)據(jù),并根據(jù)插入排序算法對(duì)序列進(jìn)行排序。排序后的數(shù)據(jù)為100、101、105、11、2、118、1、27。通過(guò)上面的例子,我們可以直觀地了解shell排序算法的執(zhí)行過(guò)程。插入排序時(shí),如果對(duì)原始數(shù)據(jù)進(jìn)行基本排序,可以大大提高排序效率。此外,對(duì)于少量的數(shù)千個(gè)序列使用直接插入排序,由于要移動(dòng)的數(shù)據(jù)量較少,因此效率更高。因此,殼排序算法具有較高的效率。本文摘自ltjava常用算法手冊(cè)。我猜您向人們?cè)儐?wèn)了JDK中各種數(shù)據(jù)結(jié)構(gòu)的基本實(shí)現(xiàn)原則。事實(shí)上,我一直很困惑。了解基本的實(shí)現(xiàn)原則是可以的,但是如果你不太了解,那又怎么樣?人們知道哪些數(shù)據(jù)結(jié)構(gòu)適用于哪些場(chǎng)景,并且能夠熟練地使用它們。那不是。。。夠了嗎?對(duì)貴公司的需求不足嗎?你希望他為你的公司創(chuàng)建一個(gè)新的數(shù)據(jù)結(jié)構(gòu)嗎?就像two peas或JDK一樣,JDK的數(shù)據(jù)結(jié)構(gòu)性能遇到了瓶頸,求職者會(huì)給你提供比工作提供的數(shù)據(jù)結(jié)構(gòu)更好的數(shù)據(jù)結(jié)構(gòu)。