試述排序演算法的一般選擇規則 求解答
1樓:生活小沈童
3全部當資料量不大時,選插入或選擇排序,不要用氣泡排序,當資料量大而又注重空間複雜性時選擇快速排序或堆排序。
選擇排序法就是在遍歷一組資料之前先選擇乙個元素,如果後面的元素小於選擇的元素,則將後面的元素與選擇的元素進行交換,直到遍歷到最後乙個元素,這樣經過一次遍歷後就會得到這組資料的最小的元素也就是有序資料的第乙個元素。按照這樣的方式繼續選擇元素繼續遍歷,直到遍歷到這組資料完全有序。
2樓:水裡風
從陣列第乙個元素開始,每一趟選取未排序部分最小的元素交換到已排序部分的末尾。
c語言 誰能講解一下選擇排序法以及有效排序。
3樓:梁丘玉蓉渠雁
1、直接選擇排序的基本思想。
n個記錄的檔案的直接選擇排序可經過n-1趟直接選擇排序得到有序結果:談帆仿。
初始狀態:無序區為r[1..n],有序區為空。
第1趟排序。
在無序區r[1..n]中選出關鍵字最小的記錄r[k],將它與無序區的第1個記錄r[1]交換,使r[1..1]和r[2..
n]分別變為記錄個數增加1個的新有序區和記錄個轎毀數減少1個的新無序區。
第i趟排序。
第i趟排序開始時,當前有序區和無序區分別為r[1..i-1]和r[i..n](1≤i≤n-1)。
該趟排序從當前無序含纖區中選出關鍵字最小的記錄r[k],將它與無序區的第1個記錄r[i]交換,使r[1..i]和r[i+1..n]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。
這樣,n個記錄的檔案的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。
直接選擇排序的具體演算法如下:
voidselectsort(seqlistr)int
i,j,k;
for(i=1;ik=i;for(j=i+1;j<=n;j++)
在當前無序區r[i..n]中選key最小的記錄r[k]
if(r[j].keyk=j;/k記下目前找到的最小關鍵字所在的位置。
if(k!=i){
交換r[i]和r[k]
r[0]=r[i];r[i]=r[k];r[k]=r[0];
r[0]作暫存單元。
endifendfor
seleetsort
4樓:席其英鄺昭
用[4,1,3,2]作例子吧。
1)找出最小的元素---4,1),即用4和1比較,是有效排序,比較結果是1比較小,因此1再和3,2比較,(1,3),(滑空1,2)這兩次比較就不是有效比較了(1在3,2前面且比它們小)
因此第一輪排序為[1,4,3,2]
最小元素和第乙個元素互換。
2)在剩餘序列中繼續找最小的元素(即排除了1)--4,3)比較,是有效排序。3比較小,因此3再和2比較,(巖裂3,2)是有效排序。找出最小的元素2。
第二輪排序為[1,2,3,4]
2和第二個元素4互換。
3)依次類信棗瞎推,(3,4)不是有效排序了。
因此,最後結果為[1,2,3,4]
有效排序為(4,1)
程式這東西要自己想,況且這個應該挺容易想出來的。。。
C語言,編寫函式,函式是用選擇排序法將陣列排序
px 10 改為 px a 編寫函式,使用選擇排序法對陣列進行排序 用c語言 include include include int main void if i tmp for i 0 i 10 i printf 3d a i printf n return 0 隨機產生陣列中的元素,更合理一些。...
簡單拓撲排序演算法C語言,簡單拓撲排序演算法C語言
include include define ture 1 define false 0 圖相關 typedef int arccell 對於無權圖,用1或0表示是否相鄰 對帶權圖,則為權值型別 typedef int booleantype 狀態變數 typedef struct mgraph a...
資料結構C語言氣泡排序問題
修改 for j n 1 j i j e69da5e887aa62616964757a686964616f31333330343162 if r j 1 key key 瞭解一下氣泡排序 bubblesort 的基本概念 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個...