merges sort use c++

来源:互联网 发布:淘宝客ev是什么 编辑:程序博客网 时间:2024/06/09 19:26

归并排序

int merges (int *a ,int first,int mid,int last){int n1 = mid-first+1;int n2 = last-mid;int left[n1];int right[n2];for( int i = 0; i < n1;i++){left[i] = a[first+i];}for (int j =0; j < n2; j++){right[j] = a[mid+1+j];}int i = 0;int j = 0;int k = first;while( i < n1 && j {if ( left[i] <= right[j]){a[k++] = left[i];i++;}else{a[k++] = right[j];j++;}}for(; i {a[k++] = left[i];}for(; j {a[k++] = right[j];}return 0;}int msort (int *a,int fist,int last){if (fist < last){int mid = (last + fist)/2;msort(a, fist,mid);msort(a, mid+1,last);merges(a,fist,mid,last);}return 0;}int main(int argc, const char * argv[]){int a[7] = {5,2,1,4,3,9,0};for (int i = 0;i < 7;i++){cout << a[i];}cout << endl;msort(a, 0, 6);for (int i = 0;i < 7;i++){cout << a[i];}return 0;}


0 0
原创粉丝点击