merge_sort

来源:互联网 发布:linux tomcat加大内存 编辑:程序博客网 时间:2024/05/22 10:55
#include <iostream>using namespace std;void merge(int a[], int low, int mid, int high){int num1, num2;int i, j, k;num1 = mid - low + 1;num2 = high - mid;int *left  = new int[num1];int *right = new int[num2];for (i=0; i!=num1; ++i){left[i] = a[low+i];}for (j=0; j!=num2; ++j){right[j] = a[mid+j+1];}i = j = 0;k = low;while ((i!=num1) && (j!=num2)){if (left[i] < right[j]){a[k++] = left[i++];} else{a[k++] = right[j++];}}for ( ; i<num1; ++i){a[k++] = left[i++];}for ( ; j<num2; ++j){a[k++] = right[j++];}delete [] left;delete [] right;}void sort(int a[], int low, int high){int mid;if (low < high){mid = (low + high)/2;sort(a, low, mid);sort(a, mid+1, high);merge(a, low, mid, high);}}int main(){int a[] = {10 , 9, 8 , 7, 6, 5, 4, 3, 2, 1};cout << "before sorted" << endl; for (int i=0; i!=10; ++i){cout << a[i] << " ";}sort(a, 0, 9);cout << "after sorted" << endl;for (int i=0; i!=10; ++i){cout << a[i] << " ";}system("pause");return 0;}

原创粉丝点击