版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第三章
查找與排序(下)本節(jié)內(nèi)容通過本單元的學習,了解、掌握有關(guān)排序的:基本概念:排序、排序分類、算法穩(wěn)定性典型的排序算法:插入排序、選擇排序、交換排序歸并排序、基數(shù)排序排序的基本概念定義:將記錄按關(guān)鍵字遞增(遞減)的次序排列起來,形成新的有序序列,稱為排序。描述:
設(shè)n個記錄的序列為{R1,R2,…,Rn},其相應(yīng)關(guān)鍵字序列為{K1,K2,…,Kn},需確定一種排序P1,P2,…,Pn,使其相應(yīng)的關(guān)鍵字滿足遞增(升序),或遞減(降序)的關(guān)系:Kp1
Kp2...Kpn
或
Kp1Kp2….Kpn3.3基本的排序技術(shù)算法穩(wěn)定性21254925*1608012345490816Exchang=125*2521490816Exchang=12525*21算法穩(wěn)定性當相等的元素是無法分辨的,比如像是整數(shù),穩(wěn)定性并不是一個問題。然而,假設(shè)以下的數(shù)對將要以他們的第一個數(shù)字來排序。(4,1)(3,1)(3,7)(5,6)(3,1)(3,7)(4,1)(5,6)(保持次序)(3,7)(3,1)(4,1)(5,6)(次序被改變)不穩(wěn)定排序算法可能會在相等的鍵值中改變紀錄的相對次序。不穩(wěn)定排序算法可以被特別地實現(xiàn)為穩(wěn)定。方法是人工擴充鍵值的比較。然而,要記住這種次序通常牽涉到額外的空間負擔。簡單起見,這里用順序存儲結(jié)構(gòu)描述待排序的記錄。順序存儲結(jié)構(gòu)(C語言描述):
#defineNntypedefstructrecord{intkey;/*關(guān)鍵字項*/intotherterm;/*其它項*/};
typedefstructrecordRECORD;
RECORD];/*RECORD型的N+1元數(shù)組*/排序算法的數(shù)據(jù)結(jié)構(gòu)典型排序算法冒泡排序快速排序簡單插入排序希爾排序簡單選擇排序堆排序歸并排序基數(shù)排序二叉排序樹一、冒泡排序1.指導思想:
兩兩比較待排序記錄的關(guān)鍵字,并交換不滿足順序要求的那些偶對元素,直到全部數(shù)列滿足有序為止。冒泡排序(Bubblesort)是基于交換排序的一種算法。它是依次兩兩比較待排序元素;若為逆序(遞增或遞減)則進行交換,將待排序元素從左至右比較一遍稱為一趟“冒泡”。每趟冒泡都將待排序列中的最大關(guān)鍵字交換到最后(或最前)位置。直到全部元素有序為止?!璦1a2a3…an-1an最大值冒泡排序算法舉例設(shè)有數(shù)列{65,97,76,13,27,49,58}比較次數(shù)第1趟{65,76,13,27,49,58},{97}6
第2趟{65,13,27,49,58},{76,97}5
第3趟{13,27,49,58},{65,76,97}4
第4趟{13,27,49},{58,65,76,97}3
第5趟{13,27},{49,58,65,76,97}2
第6趟{13},{27,49,58,65,76,97}1
總計:21次3.冒泡排序?qū)崿F(xiàn)bubble(int*item,intcount){inta,b,t;for(a=1;a<count;a++)/*n-1趟冒泡處理*/for(b=1;b<=count-a;b++)/*每趟n-i次的比較*/if(item[b-1]>item[b])/*若逆序,則交換*/{t=item[b-1];/*它們的位置*/item[b-1]=item[b];item[b]=t;}}4.改進的冒泡排序從上述舉例中可以看出,從第4趟冒泡起,序列已有序,結(jié)果是空跑了3趟。若兩次冒泡處理過程中,沒有進行交換,說明序列已有序,則停止交換。這就是改進的冒泡算法的處理思想。用改進的冒泡算法進行處理,比較次數(shù)有所減少。對于數(shù)列{65,97,76,13,27,49,58}比較次數(shù)第1趟{65,76,13,27,49,58},{97}6
第2趟{65,13,27,49,58},{76,97}5
第3趟{13,27,49,58},{65,76,97}4
第4趟{13,27,49},{58,65,76,97}3
總計:18次5.算法評價若待排序列有序(遞增或遞減),則只需進行一趟冒泡處理即可;若反序,則需進行n-1趟的冒泡處理。在最壞的情況下,冒泡算法的時間復(fù)雜度是O(n2)。當待排序列基本有序時,采用冒泡排序法效果較好。冒泡排序算法是穩(wěn)定的。
課堂練習對下列數(shù)據(jù)進行冒泡排序23,34,69,21,5,66,7,8,12,34二、快速排序快速排序法是對冒泡排序法的一種改進,也是基于交換排序的一種算法。因此,被稱為“分區(qū)交換排序”??焖倥判蚍ㄊ且晃挥嬎銠C科學家C.A.R.Hoare推出并命名的。曾被認為是最好的一種排序方法。2.快速排序算法Step1分別從兩端開始,指針i指向第一個元素A[left],指針j指向最后一個元素A[right],分界點取K;Step2循環(huán)(ij)從左邊開始進行比較:若K>A[i],則i=i+1,再進行比較;若KA[i],則將A[i]交換到右邊。從右邊開始進行比較:若KA[j],則將A[j]交換到左邊;若K<A[j],則j=j-1,再進行比較;當i=j時,一次分解操作完成。Step3
在對分解出的左、右兩個子序列按上述步驟繼續(xù)進行分解,直到子序列長度為1(不可再分)為止,也即序列全部有序。qs(int*item,intleft,intright){inti,j,x,y,k;i=left;j=right;x=item[(left+right)/2];/*計算中點位置*/do{/*i≤j的循環(huán)處理*/while(item[i]<x&&i<right)i++;/*確定i點交換位置*/while(x<item[j]&&j>left)j--;/*確定j點交換位置*/if(i<=j)/*如果i、j位置合法,則交換*/{y=item[i];/*A[i]和A[j]的位置*/item[i]=item[j];item[j]=y;i++;j--;}}while(i<=j);if(left<j)qs(item,left,j);/*對分割出的左部處理*/if(i<right)qs(item,i,right);/*對分割出的右部處理*/}快速排序算法舉例對于數(shù)列{49,38,60,90,70,15,30,49},采用中點分界法:初始狀態(tài):4938609070153049比較次數(shù)第1趟
493860907015304949386090701530495(i4、j1)
4938604970153090
5(i4、j1)
{49386049701530}90
小計:10
ik=90jijji快速排序算法舉例(續(xù)二)
初始狀態(tài):303815比較次數(shù)
第3趟3038153(i2、j1)
{30,15}38小計:3
第4趟7060492(i1、j1)
4960702(i1、j1)小計:4k=38ijk=60ji快速排序算法舉例(續(xù)三)
初始狀態(tài):3015比較次數(shù)
第5趟30152(i1、j1)
1530小計:2
最后狀態(tài):
{1530384949607090}總計:27
k=30ij三、簡單插入排序1.基本思想:將n個元素的數(shù)列分為已有序和無序兩個部分。
{{a1},{a2,a3,a4,…,an}}{{a1(1),a2(1)},{a3(1),a4(1)…,an(1)}}…...{{a1(n-1),a2(n-1)
,…},{an(n-1)}}有序無序每次處理:將無序數(shù)列的第一個元素與有序數(shù)列的元素從后往前逐個進行比較,找出插入位置,將該元素插入到有序數(shù)列的合適位置中。從前往后,若比ai小,則放在ai前面從后往前,若比ai大,則放在ai后邊。2.插入排序算法步驟Step1
從有序數(shù)列{a1}和無序數(shù)列{a2,a3,…,an}開始進行排序;Step2
處理第i個元素時(i=2,3,…,n),數(shù)列
{a1,a2,…,ai-1}是已有序的,而數(shù)列{ai,ai+1,…,an}是無序的。用ai與ai-1、ai-2,…,a1進行比較,找出合適的位置將ai插入。(從后往前比較)Step3
重復(fù)Step2,共進行n-1的插入處理,數(shù)列全部有序。(從小到大排序)插入排序舉例
設(shè)有數(shù)列{18,12,10,12,30,16}初始狀態(tài):{18},{12,10,12,30,16}比較次數(shù)
i=1{18},{12,10,12,30,16}1i=2{12,18},{10,12,30,16}2i=3{10,12,18},{12,30,16}2i=4{10,12,12,18},{30,16}1i=5{10,12,12,18,30},{16}3{10,12,12,16,18,30}
總計:9次插入排序算法實現(xiàn)
insert_sort(item,n)int*item,n;
{inti,j,t;
for(i=1;i<n;i++)//n-1次循環(huán)
{t=item[i];//要插入的元素
j=i-1;//有序部分起始位置
while(j>=0&&t<item[j])//尋找插入位置
{item[j+1]=item[j];//當前元素后移
j--;}item[j+1]=t;//插入該元素
}}4.算法評價插入算法比較次數(shù)和交換次數(shù)約為n2/2,因此,其時間復(fù)雜度為O(n2
)。該算法是穩(wěn)定的。四.希爾(Shell)排序1.思想:希爾排序是一種快速排序法,出自D.L.Shell,指導思想:仍采用插入法,排序過程通過調(diào)換并移動數(shù)據(jù)項來實現(xiàn)。每次比較指定間距的兩個數(shù)據(jù)項,若右邊的值小于左邊的值,則交換它們的位置。間距d按給定公式減少:di+1=(di+1)/2
,直到d等于1為止。d取{9,5,3,2,1}。
2.算法步驟Step1
將n個元素的數(shù)列分為m個部分,元素比較間距為d。Step2在第i步,兩元素比較的間距取
di+1=(di+1)/2{9,5,3,2,1}
若ai>ai+1
,則交換它們的位置。Step3
重復(fù)上述步驟,直到dK=1。希爾排序例子d=5d=3插入排序最后以1步長進行排序(此時就是簡單的插入排序了)希爾排序是基于插入排序的以下兩點性質(zhì)而提出改進方法的:1)插入排序在對幾乎已經(jīng)排好序的數(shù)據(jù)操作時,效率高,即可以達到線性排序的效率;2)但插入排序一般來說是低效的,因為插入排序每次只能將數(shù)據(jù)移動一位。3.SHELL排序算法(c++語言)template<classT>shellsort(Titem[],intn){inti,j,h;Tt;h=n/2;
while(h>0){for(i=h;i<n;i++)//內(nèi)部為插入排序
{t=item[i];j=i-h;
while(t<item[j]&&j>=0)
{item[j+h]=item[j];j=j-h;} item[j+h]=t;}h=h/2;
}}
4.算法評價希爾排序算法比較次數(shù)約為n1.5,因此,其時間復(fù)雜度為O(n1.5
)。該算法是不穩(wěn)定的。希爾排序課堂練習233321124142269043d=531五、簡單選擇排序1.基本思想:每次從待排序的記錄中選出關(guān)鍵字最?。ɑ蜃畲螅┑挠涗?,順序放在已有序的記錄序列的最后(或最前)面,直到全部數(shù)列有序。
{{a1},{a2,a3,a4,…,an}}{{a1(1),a2(1)},{a3(1),a4(1)…,an(1)}}…...{{a1(n-1),a2(n-1)
,…},{an(n-1)}}
有序無序2.選擇排序算法步驟Step1
從原始數(shù)列{a1,a2,a3,…,an}開始進行排序,比較n-1次,從中選出最小關(guān)鍵字,放在有序數(shù)列中,形成{a1}、{a2,a3,…,an}有序數(shù)列和無序數(shù)列兩部分,完成第1趟排序。Step2
處理第i趟排序時(i=2,3,…,n),從剩下的n-i+1個元素中找出最小關(guān)鍵字,放在有序數(shù)列的后面。Step3
重復(fù)Step2,共進行n-1趟的選擇處理,數(shù)列全部有序。選擇排序舉例
設(shè)有數(shù)列{18,12,10,12,30,16}初始狀態(tài):{},{18,12,10,12,30,16}比較次數(shù)
i=1{10},{18,12,12,30,16}5
i=2{10,12},{18,12,30,16}4
i=3{10,12,12},{18,30,16}3i=4{10,12,12,16},{18,30}2
i=5{10,12,12,16,18},{30}1
總計:15次3.選擇排序算法select_sort(int*item,intcount){inti,j,k,t;for(i=0;i<count-1;++i)//n-1次循環(huán)
{k=i;//無序部分第1個元素
t=item[i];//及位置
for(j=i+1;j<count;++j)//尋找最小值循環(huán)
{if(item[j]<t){k=j;t=item[j];}//記錄最小值及位置
}item[k]=item[i];//交換最小值與有序
item[i]=t;//部分最后1個元素位置
}}4.算法評價每次選出當前最小關(guān)鍵字,但沒有為以后的選擇留下任何信息,比較次數(shù)仍為O(n2
)。選擇排序算法是不穩(wěn)定的。
六、堆排序堆排序是一種樹型選擇排序。在排序過程中,將R[0]到R[n-1]看成是一個完全二叉樹順序存儲結(jié)構(gòu),利用完全二叉樹中雙親結(jié)點和孩子結(jié)點之間的內(nèi)在關(guān)系來選擇關(guān)鍵字最小記錄。堆排序分為兩個步驟:
1、根據(jù)初始輸入,形成初始堆。
2、通過一系列的對象交換和重新調(diào)整進行排序。1.堆的定義n個關(guān)鍵字序列K1,k2,...,Kn稱為堆,當且僅當該序列滿足特性:
從堆的定義可以看出,堆實質(zhì)上是滿足如下性質(zhì)的二叉樹:樹中任一非葉子結(jié)點的關(guān)鍵字均小于或等于它的孩子結(jié)點的關(guān)鍵字。101556253070101556253070小根堆示例705630251510705630251510大根堆示例*2.建堆42139188241623059188422324160513建堆的方法次序思想舉例實現(xiàn)算法(a)只有一個結(jié)點的樹是堆(b)而在完全二叉樹中,所有序號i>=low(n/2)的結(jié)點都是葉子,因此以這些結(jié)點為根的子樹都已是堆。(1)建堆次序13一個結(jié)點的樹是堆0523912416884213建大根堆(c)只需依次將序號為low(n/2)low(n/2)-1,...,1的結(jié)點作為根的子樹都調(diào)整為堆即可。2391241605884213n/2(1)建堆次序(2)建堆方法--“篩選法”
一:
如果R[i]的左右子樹已是堆,這兩棵子樹的根分別是各自子樹中關(guān)鍵字最大的結(jié)點。2391241605884213二:若根的關(guān)鍵字已是三者(根、左孩子、右孩子)中的最大者,則無須做任何調(diào)整;否則必須將具有最大關(guān)鍵字的孩子與根交換。2391241605884213三:
交換之后有可能導致新子樹不再是堆,需要將新子樹調(diào)整為堆。如此逐層遞推下去,直到調(diào)整到樹葉為止。4288911324160523428891132416052317…,…14思考:如果最后一個節(jié)點不是14,而是12將如何?例子:關(guān)鍵字序列為42,13,91,23,24,16,05,88,n=8,故從第四個結(jié)點開始調(diào)整4213912324160588421391232416058842139188241605234213918824160523不調(diào)整421391882416052342139188241605234288912324160513428891232416051391884223241605139188422324160513建成的堆42139188241605234213918824160523m=2h[m]=t=13j=4h[j]=88h[j+1]=24jmSIFT(ETh[],intn;intm){intj;ETt;t=h[m];j=2*m;while(j<=n)//處理到葉子
{if((j<n)&&(h[j]<h[j+1]))j++;//兩顆子樹比較
if(t<h[j]){//exchangeh[m]=h[j];h[j]=tm=j;
j=2*m;}elsebreak;}
SIFT(ETh[],intn;intm){intj;ETt;t=h[m];j=2*m;while(j<=n)//處理到葉子
{if((j<n)&&(h[j]<h[j+1]))j++;//兩顆子樹比較
if(t<h[j]){//exchangeh[m]=h[j];h[j]=tm=j;
j=2*m;}elsebreak;}
429188241605234288918824160523m=4t=13h[m]=13j=8h[j]=23
h[n+1]=013jmSIFT(ETh[],intn;intm){intj;ETt;t=h[m];j=2*m;
while(j<=n)//處理到葉子
{if((j<n)&&(h[j]<h[j+1]))j++;//兩顆子樹比較
if(t<h[j]){//exchangeh[m]=h[j];h[j]=tm=j;
j=2*m;}elsebreak;}}429188241605134213918824160523m=8t=13h[m]=23j=1623jm上述算法只是對一個指定的結(jié)點進行調(diào)整。有了這個算法,將初始的無序區(qū)R[1]到R[n]建成一個大根堆,如何實現(xiàn)?for(i=n/2-1;i>=0;i--)SIFT(R,n-1,i)
由于建堆的結(jié)果把關(guān)鍵字最大的記錄選到了堆頂?shù)奈恢?,而排序的結(jié)果應(yīng)是升序,如何解決?3.堆排序算法應(yīng)該將R[0]和R[n-1]交換,這就得到了第一趟排序的結(jié)果。
第二趟排序的操作首先是將無序區(qū)R[0]到R[n-2]調(diào)整為堆。這時對于當前堆來說,它的左右子樹仍然是堆,所以,可以調(diào)用SIFT函數(shù)將R[0]到R[n-2]調(diào)整為大根堆,選出最大關(guān)鍵字放入堆頂,然后將堆頂與當前無序區(qū)的最后一個記錄R[n-2]交換,如此反復(fù)進行下去。91884223241605139188422324160513(a)初始堆R[1]到R[8]舉例:13884223241605911388422324160591(b)第一趟排序之后(c)重建的堆R[1]到R[7]8824422313160591882442231316059105244223131688910524422313168891(d)第二趟排序之后(e)重建的堆R[1]到R[6]42241623130588914224162313058891(f)第三趟排序之后05241623134288910524162313428891(g)重建的堆R[1]到R[5]24231605134288912423160513428891(h)第四趟排序之后13231605244288911323160524428891(i)重建的堆R[1]到R[4]23131605244288912313160524428891(j)第五趟排序之后05131623244288910513162324428891(k)重建的堆R[1]到R[3]16130523244288911613052324428891(l)第六趟排序之后05131623244288910513162324428891(m)重建的堆R[1]到R[2]13051623244288911305162324428891(n)第七趟排序之后05131623244288910513162324428891HEAPSORT(ETp[]){inti;ETt;for(i=n/2-1;i>=1;i--)sift(p,n-1,i);for(i=n-1;i>=1;i--){t=p[0];p[0]=p[i];p[i]=t;sift(p,i-1,0);}}4.堆排序的時間復(fù)雜度堆排序的時間復(fù)雜性為O(nlog2n)
空間復(fù)雜性為O(1)堆排序是不穩(wěn)定的排序方法。堆排序課堂練習2333211241422690431)先建大根堆(寫出過程)2)排序!七、歸并排序基本原理:通過對兩個有序結(jié)點序列的合并來實現(xiàn)排序。所謂歸并是指將若干個已排好序的部分合并成一個有序的部分。若將兩個有序表合并成一個有序表,稱為2-路歸并。1.兩路歸并的基本思想(1)設(shè)有兩個有序表A和B,對象個數(shù)分別為al和bl,變量i和j分別是兩表的當前指針。(2)設(shè)表C是歸并后的新有序表,變量k是它的當前指針。(3)i和j對A和B遍歷時,依次將關(guān)鍵字小的對象放到C中,當A或B遍歷結(jié)束時,將另一個表的剩余部分照抄到新表中。兩路歸并的示例25
57
48
37
12
92
862557
3748
1292
8625374857
12869212253748578692
歸并排序就是利用上述歸并操作實現(xiàn)排序的。(1)將待排序列R[1]到R[n]看成n個長度為1的有序子序列,把這些子序列兩兩歸并,便得到high(n/2)個有序的子序列。(2)然后再把這high(n/2)個有序的子序列兩兩歸并,如此反復(fù),直到最后得到一個長度為n的有序序列。(3)上述每次歸并操作,都是將兩個子序列歸并為一個子序列,這就是“二路歸并”,類似地還可以有“三路歸并”或“多路歸并”。算法評價空間復(fù)雜度為O(n),用輔助空間L1、L2、(Swap)時間復(fù)雜度為O(nlogn)2-路歸并排序算法是穩(wěn)定的。
八、基數(shù)排序
多關(guān)鍵字排序技術(shù):多關(guān)鍵字(K1,K2,……Kt);例如:關(guān)鍵字K1小的結(jié)點排在前面。如關(guān)鍵字K1相同,則比較關(guān)鍵字K2
,關(guān)鍵字K2小的結(jié)點排在前面,依次類推……
1.舉例
假定給定的是t=2位十進制數(shù),存放在數(shù)組B之中?,F(xiàn)要求通過基數(shù)排序法將其排序。
設(shè)置十個口袋,因十進制數(shù)分別有數(shù)字:0,1,2,…9,分別用B0、B1、B2、……、B9
進行標識。
執(zhí)行j=1…t(這里t=2)次循環(huán),每次進行一次分配動作,一次收集動作。
將右起第j位數(shù)字相同的數(shù)放入同一口袋。比如數(shù)字為1者,則放入口袋B1,余類推……
收集:按B0、B1、B2、……B9
的順序進行收集?;鶖?shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋?;鶖?shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。5基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。5基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。52基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。52基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。529基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。529基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。5297基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。5297基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。529718基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。529718基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。52971817基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。52971817基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。5297181752基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=5、2、9、7、18、17、52 B0B1B2B3B4B5B6B7B8B9口袋分配完畢,按照箭頭所指的方向進行收集動作。注意:收集后的序列已經(jīng)按照右起第一位(個位數(shù)字)排好序了。5297181752收集后的序列:2、52、5、7、17、18、9、基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配?;鶖?shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。2基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。2基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。252基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。252基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。2525基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。2525基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。25257基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。25257基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。2525717基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。2525717基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)所指向的數(shù),進行分配動作,將其分配到相應(yīng)的口袋。和第一次不同,這次根據(jù)右起第二位數(shù)字(十位數(shù)字)進分配。252571718基數(shù)排序舉例e.g:B=5 、2、9、7、18、17、52用基數(shù)排序法進行排序。
B=2、52、5、7、17、18、9(第一次收集的結(jié)果)B0B1B2B3B4B5B6B7B8B9口袋根據(jù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《職業(yè)農(nóng)民培育》課件
- 2024年鄉(xiāng)鎮(zhèn)組織員個人年終工作總結(jié)
- 《旅行社的戰(zhàn)略管理》課件
- 協(xié)力共贏:團隊力量
- 酒店前廳保安執(zhí)勤要領(lǐng)
- 保險行業(yè)銷售技巧培訓總結(jié)
- 2001年天津高考語文真題及答案(圖片版)
- 媒體行業(yè)客服工作感想
- 景觀設(shè)計師年終總結(jié)7篇
- 2023年項目管理人員安全培訓考試題(能力提升)
- 膠粘劑行業(yè)銷售人員工作匯報
- 3-6歲兒童學習與發(fā)展指南語言領(lǐng)域解讀
- 2023-2024學年浙教版科學九年級上冊期末測試+
- 國開02181-混凝土結(jié)構(gòu)設(shè)計原理機考復(fù)習資料
- 兒科佝僂病中醫(yī)診療規(guī)范診療指南2023版
- 2023建筑業(yè)10項新技術(shù)
- 2023-2024學年二年級數(shù)學上冊期末樂考 非紙筆測試B方案 人教版
- 維修工作流程圖
- Y2-90S-4-三相異步電動機的制作-課程設(shè)計報告
- 中式烹調(diào)工藝與實訓(第三版) 課件 第10、11章 烹飪美學、菜肴創(chuàng)新
- 物業(yè)投訴處理培訓課件
評論
0/150
提交評論