归并排序(分治法)
来源:互联网 发布:杜兰特各赛季数据统计 编辑:程序博客网 时间:2024/05/01 08:42
Merge Sort
原始数据使用随机函数生成。 采用结构化程序设计,可以很容易改为从标准输入或文件读入数据,只需要修改函数getData即可。 数据个数由宏定义给出,也可以轻松地改为输入。 原始数据使用随机函数生成。 采用结构化程序设计,可以很容易改为从标准输入或文件读入数据,只需要修改函数getData即可。 数据个数由宏定义给出,也可以轻松地改为输入。
排序时需要一个与数据规模相等的辅助存储。
/* * * 归并排序算法程序 * */#include <stdio.h>#include<stdlib.h>#include <time.h>//#define DEBUG#define N 7void getData(int [], int);void outputData(int [], int);void mergesort(int a[], int temp[], int low, int high);void merge(int a[], int temp[], int low, int middle, int high);int main(void){ int a[N], temp[N]; getData(a, N); /* 获得数据放入数组a中 */ printf("Unordered datas: "); outputData(a, N); mergesort(a, temp, 0, N - 1); printf("In sorted order: "); outputData(a, N); return 0;}void mergesort(int a[], int temp[], int low, int high){ int middle; if(low < high) { middle = (low + high) / 2;#ifdef DEBUG printf("In sorted order: "); outputData(a, N); printf("middle=%d\n",middle);#endif mergesort(a, temp, low, middle); mergesort(a, temp, middle+1, high); merge(a, temp, low, middle, high); }}void merge(int a[], int temp[], int low, int middle, int high){ int i = low, j=middle+1, k = low; while(i <= middle && j <= high) { if(a[i] < a[j]) temp[k++] = a[i++]; else temp[k++] = a[j++]; } while(i <= middle) temp[k++] = a[i++]; while(j <= high) temp[k++] = a[j++]; for(i=low; i<=high; i++) a[i] = temp[i];}void getData(int d[], int n){ time_t t; srand((unsigned) time(&t)); /* 设置随机数起始值 */ int i; for(i=0; i < n; i++) d[i] = rand() % 1000; /* 获得0-999之间的整数值 */}void outputData(int d[], int n){ int i; for (i = 0; i < n; i++) printf("%d ", d[i]); printf("\n");}
1 0
- 分治法(归并排序)
- 归并排序(分治法)
- 归并排序(分治法)
- 分治法,归并排序
- 分治法-归并排序
- 分治法-归并排序
- 归并排序-分治法
- 分治法 - 归并排序
- 分治法--归并排序
- 归并排序 分治法
- 归并排序--分治法
- 分治法 & 归并排序
- 分治法-归并排序
- 分治法-归并排序
- 分治法-归并排序
- 分治(归并排序)
- 归并排序(分治)
- 归并排序(分治)
- ECMAScript基础
- Android adb shell学习心得(二)
- 有趣的二进制 读书笔记
- 在ListView中显示分类字母标题
- Storm集群启动与停止脚本及其注意事项
- 归并排序(分治法)
- *[Lintcode]Trailing Zeros
- leetcode 75. Sort Colors
- SqlServer2012 ID自增需要插入指定值处理
- Scala光速入门笔记及作业(一)
- LeetCode *** 137. Single Number II
- 排序(希尔、 堆 归并 快速)
- Spring基础(一)——AOP&IoC
- windows DLL 被修改 案例分析