實際上可以拓展到不全部排序而求某個位置的數。因為快排每趟都會確定乙個數的最終位置,並且返回這個數的下標。利用這個性質來求。//快速排序法
int
quicksort_process3
(int
*a,int low,
int high)
a[h]
= temp;
return h;
}void
quicksort3
(int
*a,int low,
int high)
}int
gettop_n_numbers
(int
*a,int n)
while(!
(e<=n&&e>=1)
);pos = n - e;
/*在乙個從小到大排序的陣列中,最大第e個數的下標恰好是n-e*/
curpos =
quicksort_process3
(a,0
, n -1)
;/*一趟快排結束時,肯定會有乙個已經確定了位置的數,返回它的下標*/
while(1
)else
if(curpos < pos)
else
}return pos;
}void
show_topn_numbers
(int
*a,int n)
乙個快速法求素數的程式
閒暇時寫了乙個找出小於某個數字的素數的程式。最常見的方法是篩選法吧。原理大致如下 若要求得16以內的所有素數,1 在陣列中存放一下資料 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2 先篩選掉是2的倍數 2 3 4 5 6 7 8 9 10 11 12 13 14 15...
就乙個快速排序。。。
話說,每次寫題的時候我都是呼叫stl的sort,自己卻還是很難快速寫出乙個快排。正好作業布置這個了。就寫一下,熟練一下,順便背一下記住。萬一以後面試問到了,也可以秒了。include include include using namespace std const int maxn 10000 5...
乙個快速排序的小技巧
最近在設計的 中有這麼乙個要求,有一堆字串,如 a 1 a 3 a 5 a 2 假設字首都是a,並且中括號中的數值沒有重複 現在要用程式將可以合併的陣列都合併起來,變成 a 1.3 a 5 那麼我想到的辦法是這樣的,將中括號中的數字提取出來,放在乙個list中,然後對list排序,也就是說上述資料排...