1樓:網友
程式中有兩個比較大的問題:
遞迴函式void p(int a,int n)沒有出口,進入死迴圈。
int fenge(int a,int n)中的。
i=0;j=n-1;
k=(i+j)/2;
t=a[k];
a[k]=a[i];
每次都把第乙個元素放到中間?第乙個元素能確保比左邊的大或等,比右邊的小或等否?
void quicksort(int a,int l, int r)int left=l,right=r;
if (left>=right)
return ;
int temp = a[left];
while (left=right為止。
while (a[right]>=temp &&left=right為止。
while(a[left]<=temp &&leftif (lefta[right]=a[left];
right--;
a[left] = temp;
quicksort(a,l,left-1);
quicksort(a,left+1,r);
2樓:哈哈哈哈
你的把報的錯誤說出來才好找啊。
快速排序的問題
3樓:網友
這道題的話我不清楚是不是應該把每個選項的步驟給列下來,但是我很迷惑。
快速排序實際上是以每次都以當前陣列的第一位作為基準作為比較的,所以說第一位的值的位置更靠中間(排序好的),二分法後就均勻,速度就會越快。
a選項第一次選擇21將會換到17的位置,第一次變換後變為:
再進行一次變換,就已經排好序了。
c選項同理,第一次選擇將21換到30的位置,變換後變為:
a、c兩選項第一次選擇的比較次數和交換次數都相同,所以時間就看第二輪了。
17,9,5)和(5,9,17)誰快?應該是(5,9,17)快一步,因為(17,9,5)還要交換一步變成(5,9,17),然後再剩下(5,9),而(5,9,17)第一步不變化,然後剩下(9,17),兩個剩下的時間(即5,9和9,17再比較一次且都是已排序的)肯定都是一樣的。
所以時間就差在需要交換的一步上:
17,9,5)->5,9,17)->5,9)+(17)第一步需要3步比較和一次交換;
5,9,17)->5,9,17)->5)+(9,17)第一步需要3步比較無需交換;
所以選c看了你的圖,我補充下:
答案對a的解釋在第一步上有誤啊,怎麼會變成(9,17,5,21,23,25,30)呢?
a選項第一次查詢將會交換25和9的位置,9只能出現在第二位的。然後再交換21和17,只會變成17,9,5,21,25,23,30啊,答案有誤!!!
另外對於其他答案,我認為,對於演算法不僅僅是交換,比較也是要算時間的,快速排序在已經排序好的數列上花的時間是最大的,平方級。
但是這些在規模較小的情況下因素太多了~~
4樓:網友
對於同樣的演算法,序列中數字需要交換的次數越少速度越快啊,完全排序的序列基本上只走for迴圈啊,都不用交換,應該選d吧。
快速排序問題
5樓:網友
快排的規則是:在每一排序完成後,總有乙個數處在它最後所應該在的位置上。然後將乙個問題分成2個問題。
一趟排序完成之後,選擇數有個特點,就是:
如果從小到大排列,則其左邊都比它大,右邊都比它小;
從大到小排列同理。
上面兩個選項,可能的中間數。
1)是73和68,73滿足左邊都比它大,右邊都比它小。68左有93右有69
2)是18和93,18左有,右有93,73;93左有18,右有73
2的兩個數都不是,1的有乙個數是。
當然是1了。
大神求救啊,排序怎麼排,**等,最好今天啊搞定
6樓:
翻越大雪山的片段。
順序:523164
怎麼排序,急急急
7樓:學霸之書
<>有銀派不懂的可以追問,滿悶閉意鋒罩賀請及時,謝謝。
排序怎麼排,急急急
8樓:網友
應該是:
there is a nature park in the picture。
is there a forest in the park?
no, there isn't
is there a river in the park?
yes, there is。 and there are some boats on the river。
cool! let's go boating 。
意思是:**中有乙個天然的公園。
公園裡有森林嗎?
沒有。公園裡有河流嗎?
有的,並且河上有些小船。
太棒了,我們去划船吧。
排序,怎麼排,急急急
9樓:中國人發悲哀
6是1,1是2,4是3,2是4,7是5,3是6,5是7,8是8,謝謝,請給分。
10樓:匿名使用者
楚辭 漢賦。
唐詩 宋詞。
元曲 明清**。
按照年代遠近來排啊。
求pascal快速排序的程式,求pascal快速排序的程式一個。
var a array 1.100 of integer i,n integer procedure pop l,r integer var p1,p2,x,t integer begin p1 l p2 r x a l r div 2 repeat while a p1 x do inc p1 w...
如何輸出快速排序演算法中每一趟的結果?我用的是遞迴的方法
用遞迴的話比較難輸出,因為會遞迴到最裡面,這不是一樣的嗎?遞迴也是一樣的輸出哦。在do while 之後迴圈把陣列的列印出來不就行了。for int mm low mm high mm printf n 這樣應該就ok了 這樣輸出很簡單啊 note your choice is c ide incl...
我們的愛到底哪裡出錯了我需要挽回他麼
我覺得你對他是不是離得太近了些,適當給彼此一些空間,談戀愛並不一定總在一起,偶爾分開一會兒給雙方想念的空間,可能會讓愛情更加保鮮。我覺得男方既然已經提出他的想法了,你應該考慮一下,而不是因為覺得不是什麼大事而去怪對方,有時候你覺得事情很小但對方覺得受不了,這種事也很常見,一開始處於熱戀期可能他會為了...