題目:隨機產生乙個數量為n的陣列,用歸併排序進行排序。
分析:1、需要隨機產生乙個整數陣列;
2、採用的演算法是合併排序,也就是用歸併排序;
3、輸出排序後的陣列。
歸併排序:
先把已知陣列分成兩組,然後兩組中分別再分成兩組,直到每一組都只有乙個資料,然後再合併的同時排序,直到都合併起來。
需要寫出兩個函式:
最後**如下:
#include #include #includeusing namespace std;
void merge(int *a,int p, int q,int r);
void merge_sort(int *a,int p,int r);
int main()
cout程式輸出結果截圖:
實現隨機數
func seed seed int64 該函式設定隨機種子,若不呼叫此函式設定隨機種子,則預設的種子值為1,由於隨機演算法是固定的,如果每次都以1作為隨機種子開始產生隨機數,則結果都是一樣的,因此一般都需要呼叫此函式來設定隨機種子,通常的做法是以當前時間作為隨機種子,以保證每次隨機種子都不同,從而...
歸併排序實現
1,我認為歸併排序是分治思想的運用,先是把要排序的數列分成兩半,分別對這兩半進行歸併排序,一步步分下去,當分到規模為1時,開始合併兩個已經有序的陣列。2,主要的 是兩個已經有序的陣列的合併,其中涉及的有空間申請的問題和哨兵的使用。具體看 這是初寫的 存在的問題有每次迭代都申請了空間且沒釋放,而且沒有...
歸併排序實現
看到個帖子寫的歸併排序,記錄一下,特別是對鍊錶的使用。歸併的排序分為三步走 1 分割,2 遞迴,3 合併。陣列歸併排序 歸併排序三步走 1 分割子問題 2 遞迴 3 合併子問題。include stdafx.h includeusing namespace std void mergearray i...