首页 > 代码库 > 重点算法--合并排序
重点算法--合并排序
#include<iostream> using namespace std; void merge(int left,int mid,int right,int a[],int b[]) { int i = 0; int cursor1 = left; int cursor2 = mid +1; while(cursor1 <= mid && cursor2 <= right) { if(a[cursor1] < a[cursor2]) b[i++] = a[cursor1++]; else b[i++] = a[cursor2++]; } while(cursor1<=mid) b[i++] = a[cursor1++]; while(cursor2<=right) b[i++] = a[cursor2++]; for(int j = 0;j< i;j++) a[j + left] = b[j]; } void mersort(int left,int right,int a[],int b[]){ if(left<right) { int mid = (left + right)/2; mersort(left,mid,a,b); mersort(mid+1,right,a,b);///这个+1是如此的明智 merge(left,mid,right,a,b); } } int main() { int a[] = {1,5,4,3,2,6,7,4,1,6,7}; int b[11] = {}; mersort(0,10,a,b); for(int i = 0;i< 10;i++) cout<<a[i]<<" "; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。