#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
#include <time.h>
#include <sys/timeb.h>
#define MAX 20
using namespace std;
int* create_list(int len) {
int* list = (int *)malloc(sizeof(int) * len);
memset(list, 0, sizeof(int) * len);
for (int i = 0; i < len; i++) {
list[i] = rand() % 200;
}
return list;
}
void print_list(int list[], int len) {
if (NULL == list || len <= 0) {
return;
}
int line = 0;
for (int i = 0; i < len; i++, line ++) {
if (line > 9)
{
cout << endl;
line = 0;
}
cout << list[i] << " ";
}
cout << endl;
}
long getSysTime() {
struct timeb tb;
ftime(&tb);
return tb.time * 1000 + tb.millitm;
}
// 合并算法 從小到大
void Merge(int list[], int start, int end, int mid, int* tmp) {
int i_start = start;
int i_end = mid;
int j_start = mid + 1;
int j_end = end;
// 表示輔助空間有多少元素
int length = 0;
// 合并兩個有序序列
while (i_start <= i_end && j_start <= j_end) {
if (list[i_start] < list[j_start]) {
tmp[length++] = list[i_start++];
} else {
tmp[length++] = list[j_start++];
}
}
// i序列
while (i_start <= i_end) {
tmp[length++] = list[i_start++];
}
// j序列
while (j_start <= j_end) {
tmp[length++] = list[j_start++];
}
// 輔助空間的數(shù)據(jù)賦值給原空間
for (int i = 0; i < length; i++) {
list[start + i] = tmp[i];
}
}
void MergeSort(int list[], int start, int end, int* tmp) {
if (start >= end) {
return;
}
// 取中間點
int mid = (start + end) / 2;
// 分組
/// 左半邊
MergeSort(list, start, mid, tmp);
/// 右半邊
MergeSort(list, mid + 1, end, tmp);
// 合并
Merge(list, start, end, mid, tmp);
}
int main(int argc, char* argv[]) {
srand((unsigned int)time(NULL));
int *list = create_list(MAX);
// 輔助空間
int *tmp = (int *)malloc(sizeof(int) * MAX);
print_list(list, MAX);
MergeSort(list, 0, MAX - 1, tmp);
print_list(list, MAX);
// 釋放
free(tmp);
free(list);
return 0;
}
歸并算法
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門频蛔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秦叛,你說我怎么就攤上這事帽驯。” “怎么了书闸?”我有些...
- 文/不壞的土叔 我叫張陵尼变,是天一觀的道長。 經(jīng)常有香客問我浆劲,道長嫌术,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任牌借,我火速辦了婚禮度气,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘膨报。我一直安慰自己磷籍,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布现柠。 她就那樣靜靜地躺著院领,像睡著了一般。 火紅的嫁衣襯著肌膚如雪够吩。 梳的紋絲不亂的頭發(fā)上比然,一...
- 文/蒼蘭香墨 我猛地睜開眼嚎研,長吁一口氣:“原來是場噩夢啊……” “哼蓖墅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起嘉赎,我...
- 正文 年R本政府宣布章姓,位于F島的核電站,受9級特大地震影響识埋,放射性物質(zhì)發(fā)生泄漏凡伊。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一窒舟、第九天 我趴在偏房一處隱蔽的房頂上張望系忙。 院中可真熱鬧,春花似錦惠豺、人聲如沸银还。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽蛹疯。三九已至,卻和暖如春扫俺,著一層夾襖步出監(jiān)牢的瞬間苍苞,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- Python算法教程第三章知識點:求和式类缤、遞歸式臼勉、侏儒排序法和并歸排序法
- 問題提出 一個集合中有N個點餐弱,N個點中有許多的相連的宴霸,任意給出兩個點囱晴,如何才能快速地知道這兩個點是否是相連(間接相...
- 坐在健康上——坐著就能增加陽氣,神奇的艾絨墊工作瓢谢,開車畸写,吃飯,電腦氓扛,手機枯芬,電視……每天有大把的時間要坐不如,做個艾...
- 去年的這個時候真慢,我還在賣手機。 或許理茎,正在看這篇文章的你手里用的手機就是從我這里買的黑界,用著還好吧,沒出什么問題吧皂林?...