首页 > 代码库 > 归并排序
归并排序
自己写的
#include<stdio.h>void Merger(int num[],int start,int end){ int k,i,j,mid=(start+end)/2; int leftlen=mid-start+1,rightlen=end-mid; int totallen=end-start+1; int *total=new int[totallen];// int *left=new int[leftlen]; //int *right=new int[rightlen];// for(i=start,j=0;i<=mid;i++) // left[j++]=num[i]; //for(i=mid+1,j=0;i<=end;i++) //right[j++]=num[i]; for(k=0,i=start,j=mid+1;i<=mid && j<=end;) { if(num[i]<num[j]) { total[k]=num[i]; k++; i++; } else { total[k]=num[j]; k++; j++; } } while(i<=mid) total[k++]=num[i++]; while(j<=end) total[k++]=num[j++]; for(k=1,i=start;k<=totallen;k++,i++) num[i]=total[k-1]; delete []total;}void MeSort(int num[],int start,int end){ if(start==end) return; int mid=(start+end)/2; MeSort(num,start,mid); MeSort(num,mid+1,end); Merger(num,start,end);}void main(){ int num[]={72,18,53,36,48,31,40}; int len=sizeof(num)/sizeof(int); int k; MeSort(num,0,len-1); for(k=0;k<=len-1;k++) printf("%d ",num[k]);}
归并排序
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。