归并排序与快速排序
来源:互联网 发布:python高级编程 编辑:程序博客网 时间:2024/06/05 22:53
归并
#include<cstdio>#include<cstring>void merge_sort(int a[],int p,int q);void merge (int a[],int p,int r,int q);int main(){ int n; scanf("%d",&n); int a[n]; for (int i=0;i<n;i++) scanf("%d",&a[i]); merge_sort(a,0,n-1); for (int i=0;i<n;i++) printf("%d ",a[i]); return 0;}void merge_sort(int a[],int p,int q){ if (p<q) { int k=p+(q-p)/2; merge_sort(a,p,k); merge_sort(a,k+1,q); merge(a,p,k,q); }}void merge (int a[],int p,int r,int q){ int i,j,k,n=r-p+1,m=q-r; int b[n],c[m]; memcpy(b,a+p,4*n),memcpy(c,a+r+1,4*m); for (i=j=k=0;i<n+m;i++) { if (j==n) {a[p+i]=c[k++]; continue;} if (k==m) {a[p+i]=b[j++]; continue;} a[p+i]=b[j]<c[k] ?b[j++]:c[k++]; }}
快排
#include<cstdio>#include<string>void quick_sort(int a[],int p,int q);int partition(int a[],int p,int q);int main (){ int n; scanf("%d",&n); int a[n]; for (int i=0;i<n;i++) scanf("%d",&a[i]); quick_sort(a,0,n-1); for (int i=0;i<n;i++) printf("%d ",a[i]); return 0;}void quick_sort(int a[],int p,int q){ if (p<q) { int i=partition(a,p,q); quick_sort(a,p,i-1); quick_sort(a,i+1,q); }}int partition(int a[],int p,int q){ int t,i=p,j=q+1; while(1) { while(a[p]<a[--j]) if (j==0) break; while(a[p]>a[++i]) if (i==0) break; if (i>=j) break; t=a[j],a[j]=a[i],a[i]=t; } t=a[j],a[j]=a[p],a[p]=t; return j;}
阅读全文
0 0
- 快速排序与归并排序
- 快速排序与归并排序
- 快速排序与归并排序
- 归并排序与快速排序
- 归并排序与快速排序
- 归并排序与快速排序
- 归并排序与快速排序
- 快速排序、归并排序与选择排序
- 排序:快速排序与归并排序
- 快速排序与归并排序时间对比
- 关于快速排序与归并排序
- 快速排序&归并排序
- 快速排序,归并排序
- 快速排序、归并排序
- 快速排序&&归并排序
- 归并排序+快速排序
- 快速排序 归并排序
- 快速排序&归并排序
- 信息熵计算(自己编写的python代码,垃圾,高手绕道)
- OAuth2.0第三方授权
- 知道~ 做到
- bzoj1483[HNOI2009]梦幻布丁 链表+启发式合并
- 串口、COM口、UART口, TTL、RS-232、RS-485区别详解
- 归并排序与快速排序
- Faster RCNN 源码解析(3.3) -- proposal_layer.py
- ubuntu中pytesseract 安装与使用示例
- NodeList 与 HTMLCollection 以及dom排序
- 页码统计问题
- docker Plugin config
- C++对C的加强
- SSL/TLS原理详解
- 1027 进制转换