归并排序

来源:互联网 发布:在哪里学淘宝美工 编辑:程序博客网 时间:2024/06/09 23:19

日常保存代码系列。

#include<algorithm>#include<iostream>using namespace std;int a[1000000];int b[1000000];void merge(int l, int mid, int r){int p1 = l;int p2 = mid + 1;for(int i = l; i <= r; i++){if(p1 <= mid && (p2 > r || (a[p1] <= a[p2]))){b[i]=a[p1];p1++;}else{b[i] = a[p2];p2++;}} for(int i = l; i <= r;i++){a[i] = b[i];}}void erfen(int l,int r){int mid = (l + r) >> 1;if(l < r){erfen(l, mid);erfen(mid + 1, r);}merge(l,mid,r);}int main(){int n;printf("请输入你要输入的数字的个数:");scanf("%d",&n);for(int i = 1; i <= n;i++){scanf("%d",&a[i]);}erfen(0,n);printf("从小到大输出为:");for(int i = 1; i <= n;i++){printf("%d ",a[i]); }  printf("\n"); return 0;}