在《演算法導論》的第五章講的是概率分析和隨機演算法,於是產生了現在的隨機排列陣列問題。隨機化有助於平衡輸入分布,進而有利於分析乙個演算法的平均情況行為。
特意去看了一下c語言裡面產生隨機數的函式(雖然是偽隨機數
兩個基本函式為:
int rand(void);
void srand(unsigned int n);
然後就是我的隨機排列陣列了。隨機排列陣列有兩種方法:
第一種是為陣列的每個元素賦予乙個隨機的優先順序,然後根據優先順序對陣列元素進行排序;
void permutebysorting(int *a,int n);
第二種是原址排列給定陣列,在進行第i次迭代時,元素a[i]是從a[i]到a[n]隨機選取的。第i次迭代以後,a[i]不再改變。
void randomizedinplace(int *a,int n);
下面貼**啦:
void permutebysorting(int *a,int n){
int *p,*q,*b;
p=(int *)malloc(sizeof(int)*n);
q=(int *)malloc(sizeof(int)*n);
b=(int *)malloc(sizeof(int)*n);
int i,j,t,m=n*n*n;
srand((unsigned)time(null));
for(i=0;i=0){
int max=0;
for(i=1;i
還是沒有勇氣嘗試分治法求矩陣乘法。。。
隨機排列陣列
再次翻出演算法導論,隨機翻倒了隨機排列陣列這個部分,感覺數學是如此神奇!首先,何謂隨機排列陣列。隨機排列陣列即通過排列給定的輸入陣列使陣列元素的排列隨機化,例如乙個陣列a n 其中元素為的值為,那麼對陣列進行隨機排列,顯然是有n!次不同的排列,並且每一次的排列都不一樣。如何把陣列元素排列隨機化呢?乙...
元小白(猿小白)高階日記 七(陣列)
陣列是一類相同元素的集合。一 一維陣列 1 陣列的建立 type t arr name const n type t 是指數組的元素型別 const n 是乙個常量表示式,用來指定陣列的大小,即元素個數 例如 int arr1 10 char arr2 30 float arr3 33 2 陣列的初...
小白高階之堆排序
堆排序與歸併排序一樣,但不同於插入排序的是堆排序的時間複雜度為o nlgn 而與插入排序相同,但不同於歸併排序的是堆排序同樣具有空間原址性 任何時候都只需要常數個額外的元素空間儲存臨時資料。堆分為最大堆和最小堆。最大堆性質是指除了跟以外的所有結點i都滿足 a parent i a i 最小堆性質是指...