归并排序
来源:互联网 发布:excel统计不同数据个数 编辑:程序博客网 时间:2024/06/06 00:47
#include<cstdio>void Mergearray(int *a, int left, int mid, int right, int *tmp) { int i = left; int j = mid +1; int k = 0; int m = mid; int n = right; //二路归并 while(i <= m && j <= n) { if(a[i] <= a[j]) { tmp[k++] = a[i++]; } else { tmp[k++] = a[j++]; } } //处理子数组中剩余的元素 while(i <= m) { tmp[k++] = a[i++]; } while(j <= n){ tmp[k++] = a[j++]; } //从临时数组中拷贝到目标数组中 for(i = 0; i < k; i++) { a[left+i] = tmp[i]; }}void MergeSort(int *a, int left, int right, int * tmp){ if(left < right) { int mid = left + (right -left)/2; //归并排序,使得是左边序列有序 MergeSort(a, left, mid, tmp); //归并排序 使得右边的序列有序 MergeSort(a, mid+1, right, tmp); //合并两个有序序列 Mergearray(a, left, mid, right, tmp); }}void printNum(int a[], int n ){ for(int i =0; i < n; i++) { printf("%3d", a[i]); }}int main(){ int array[] = {6, 3, 2, 1, 4, 10, 9, 8, 7, 5}; int b[10]; MergeSort(array, 0, 9, b); printNum(array, 10); return 0;}
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 二十九、在storm上运行python程序(修正)
- JConsole 使用总结
- ionic list 头像
- 三十、十分钟掌握最强大的python爬虫
- 2017美国大学生数学建模感想及经验
- 归并排序
- 为 Jenkins 配置 .NET 持续集成环境_0
- 三十一、利用微信搜索抓取公众号文章
- 正则表达式Regex
- 三十二、scrapy爬虫抓取网页写入mysql数据库
- UVA1619 栈维护递增序列
- 将文件转成编码base64码
- 三十三、利用scikit-learn计算tf-idf做文本词频分析
- MXNet | 在R语言中使用