部分排序演算法:要排序陣列中第k1個元素到第k2個元素,先用類快排演算法找出第k1和第k2個元素,演算法見以前部落格:陣列中第k個數(《程式設計珠璣(續)》第3章),此時,k1到k2中的元素雖然未排序,但是任何乙個元素都比k1個元素大比k2個元素小。注意如果有相同的元素的特殊情況!然後用快排排序k1到k2之間的元素即可。
#include#includeusing namespace std;
int select(int a,int lo,int hi,int k) }
int main()
接下來就是《程式設計之美》了,據說不簡單,看看再說。哎,時間不多了。。。還想看看linux,不知道有沒有時間了。
程式設計珠璣第14章
這裡把所有關於堆的操作寫出來。當做標程吧。include include define ms 1025 typedef struct heap heap heap h static void shift heap h,int i else break a i t static void increa...
程式設計珠璣第12章
正文 如何生成0 n 1內的m個隨機整數 1 方法一 比如要從5個數里選出2個數,第乙個數的概率是2 5,第二個數的概率是1 4,然後是0 3 那麼現在已經很清楚了。可以寫 如下 for int i 0 i n i if rand n i m 2 方法二 可以用乙個set,每生成乙個隨機,就去set...
程式設計珠璣第13章
正文 為了解決在12章中的隨機數問題,本章中的目的是對檢視是否在陣列中的情況進行處理。那麼這裡採用了以下幾種方法 1 採用c 的set 2 採用陣列 3 採用鍊錶,順序搜尋,插入時不用移動。結果是陣列的比鍊錶的要快 1 鍊錶需要讀入的記憶體數比陣列大 2 陣列訪問有較好的記憶體相聯性,而鍊錶則不能保...