归并排序
来源:互联网 发布:老虎 知乎 编辑:程序博客网 时间:2024/06/11 06:54
代码模板:
归并排序的主要思想就是对两组有序数据进行操作,初始时设置两个两个指针指向两组数据的第一个数据,进行比较,将小的那一个放进另一个数组,指针加一。这里我们遇到的是一组无序的数据,所以我们要对其进行二分,然后对二分的数据进行排序,递归进行,把mid左边的看做一组数据,右边看做一组数据,进行比较,将较小的放入另一个数组即可。
#include<cstdio>#include<cstring>#include<iostream>#define N 500using namespace std;int a[N], b[N];void MergeSort(int left, int right){ if(right<left+2){ if(a[left]>a[right]) swap(a[left], a[right]); return ; } int mid = (left+right)/2; MergeSort(left, mid); MergeSort(mid+1, right); int i = left, j = mid+1; for(int k = left; k<=right; k++){ if(i<=mid && ((j==right+1) || a[i]<=a[j])){ b[k] = a[i]; i++; } else{ b[k] = a[j]; j++; } } for(int k = left; k<=right; k++) a[k] = b[k];}int main(){ int n ; scanf("%d", &n); for(int i = 0; i<n; i++) scanf("%d", &a[i]); MergeSort(0,n-1); for(int i = 0; i<n; i++) printf("%d ", a[i]); return 0;}
0 0
- 归并排序-归并排序
- 归并和归并排序
- 归并与归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 排序::归并
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- 归并排序
- FPGA机器学习之stanford机器学习第十七堂
- 第十七周周报
- aspcms给当前栏目加样式 判断当前栏目是否为选定
- 约瑟夫问题
- 2014-7-14任务完成情况
- 归并排序
- 访问路径整理
- C++中的动态二维数组
- 用IE浏览器打开vsd文件
- C语言变量定义问题
- Quartz笔记
- 专门针对初学者的Node.js教程 (转)
- linux mysql 卸载,安装,测试全过程
- 驱动与应用层简单消息通信