测评传送门(同快排)
又快又稳的排序方法,我的最爱~
解析:
归并就是裸裸的二分,一直分一直分直到可以最轻松地判断大小来排序
代码已经解释的很明白了,就不多啰嗦啦
代码如下:
#include<stdio.h> using namespace std; int a[100001],temp[100001]; void bin(int l,int r) { if(l==r) return ; int mid=(l+r)>>1; bin(l,mid); bin(mid+1,r); int i=l,j=mid+1,k=l; while(i<=mid && j<=r) { if(a[i]<=a[j]) { temp[k]=a[i]; k++,i++; } else { temp[k]=a[j]; k++,j++; } } while(i<=mid) { temp[k]=a[i]; k++,i++; } while(j<=r) { temp[k]=a[j]; k++,j++; } for(int i=l;i<=r;++i){ a[i]=temp[i]; } } int main() { int n; scanf("%d",&n); for(int i=1;i<=n;++i){ scanf("%d",&a[i]); } bin(1,n); for(int i=1;i<=n;++i){ printf("%d ",a[i]); } return 0; }