归并排序(Merge Sort)
来源:互联网 发布:最有效的淘宝推广方式 编辑:程序博客网 时间:2024/06/05 18:08
#include<stdio.h>#include<malloc.h>void Merge(int a[],int p,int q,int r){int n1=q-p+1;int n2=r-q;int *L=(int *)malloc(sizeof(int)*(n1)); //分配内存空间给未知大小的数组int *R=(int *)malloc(sizeof(int)*(n2));for(int i=0;i<n1;i++) //i必须从0开始技术,而不是从p开始L[i]=a[p+i];//此处(p+i)而非i,因为p可能不为0for(i=0;i<n2;i++)R[i]=a[q+1+i];i=0;int j=0;int k=p;while(i<n1&&j<n2&&k<=r){if(L[i]<=R[j])a[k++]=L[i++];elsea[k++]=R[j++];}while(k<=r){if(i<n1&&j>=n2)a[k++]=L[i++];if(i>=n1&&j<n2)a[k++]=R[j++];}}void MergeSort(int a[],int p,int r){if(p<r) //如果没有这个限制,r一直会变小,进入死循环{int q=(p+r)/2;MergeSort(a,p,q);MergeSort(a,q+1,r);Merge(a,p,q,r);}}void main(){int a[10]={2,5,8,7,6,9,0,3,1,4};MergeSort(a,0,9);for(int i=0;i<10;i++){printf("%d ",a[i]);}printf("\n");}
0 0
- 归并排序(merge sort)
- 归并排序(merge sort)
- 归并排序(merge sort)
- 归并排序(Merge Sort)
- 归并排序(merge sort)
- 归并排序(merge sort)
- Merge Sort (归并排序)
- 归并排序(Merge sort)
- 归并排序(Merge sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(MERGE-SORT)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- 归并排序(Merge Sort)
- Android手机 Fildder真机抓包
- SMTP 服务器要求安全连接或客户端未通过身份验证的各个解决方案(C#)
- Xcode基本操作
- TCP连接
- sumofsub
- 归并排序(Merge Sort)
- 今日作息及食谱(7.2)
- All repo command
- 1:Commons BeanUtils组件简介
- Python中的高级数据结构
- There is no Action mapped fornamespace /xxx and action name xxx. - [unknown location]
- c#绘图
- APDU命令的结构和处理
- 仪器、界面的水有多深