本文共 756 字,大约阅读时间需要 2 分钟。
归并排序
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;}
转载地址:http://uboxi.baihongyu.com/