分治排序
来源:互联网 发布:网络感叹号是什么原因 编辑:程序博客网 时间:2024/06/07 18:00
#include<stdio.h>#include<limits.h>#include <stdlib.h>void sort(int *a,int p,int q,int r){int end1,end2;end1=q-p+1;//这是数字的个数,避免q-p=0,所以+1保证 数组范围最小取1;end2=r-q;//r-(q+1)+1;int *L,*R;L=(int *)malloc((end1+2) * sizeof(int));//动态开辟内存 由0->end1 加上最后的哨兵元素R=(int *)malloc((end2+2) * sizeof(int));for(int i=1;i<=end1;i++)L[i]=a[p+i-1];for(int j=1;j<=end2;j++)R[j]=a[q+j];L[end1+1]=INT_MAX;//无穷大R[end2+1]=INT_MAX;i=1,j=1;for(int k=p;k<=r;k++){if(L[i]<=R[j]){a[k]=L[i];i++;}else{a[k]=R[j];j++;}}free(L);free(R);}void digui(int *a,int p,int r){int q;if(p<r){q=(p+r)/2;digui(a,p,q);digui(a,q+1,r);sort(a,p,q,r);}} int main(){int a[11];for(int i=1;i<=10;i++)scanf("%d",&a[i]);int *ptr=a;digui(ptr,1,10);for(i=1;i<=10;i++)printf("%d\n",a[i]);return 0;}
0 0
- 分治排序
- 分治排序
- 分治排序
- 分治排序
- 分治法合并排序
- 分治递归排序
- 分治策略----快速排序
- 排序-----二分治
- 分治法排序
- 合并排序,分治思想
- 分治法,归并排序
- 分治排序示例
- 分治合并排序
- 分治-归并排序
- 分治法--快速排序
- 分治法--合并排序
- 分治法--快速排序
- 合并排序(分治)
- ubuntu linux14.04添加系统调用
- Android输入法back出现黑块
- leetcode 76 Minimum Window Substring
- MongoDB整合Spring 详细讲解(含代码)
- Xutils 框架
- 分治排序
- Unity AssetBundle资源打包,Depend依赖关系
- poj3913 Gnome Sequencing
- poj 2251 Dungeon Mastert题目
- Linux-Ubuntu 和 安装 genymotion 的一些问题和一些命令
- 【codevs1557】 热浪, Dijkstra算法入门
- 通过调用沙盒文件动态获取第三方字体库
- java提取域名函数
- 区分接口继承和实现继承(Effective C++_34)