归并排序

    技术2022-07-11  93

    #include <iostream> #include <vector> using namespace std; template<class T> void merge(T &arr, int begin, int mid, int end) { vector<int> temp; int i = begin; int j = mid + 1; while (i <= mid && j <= end) { if (arr[i] < arr[j]) { temp.push_back(arr[i++]); } else { temp.push_back(arr[j++]); } } while (i <= mid) { temp.push_back(arr[i++]); } while (j <= end) { temp.push_back(arr[j++]); } for (i = 0; i < temp.size(); i++) { arr[i+begin] = temp[i]; } } template<class T> void mergeSort(T &arr,int begin,int end) { int mid = (begin + end) / 2; if (begin < end) { mergeSort(arr, begin, mid); mergeSort(arr, mid + 1, end); merge(arr, begin, mid, end); } } int main() { vector<int> arr{ 1,2,5,8,5,3,1,5,2,156,5,23,5 }; int end = arr.size(); mergeSort(arr, 0, end-1); for (auto p = arr.begin(); p != arr.end(); p++) { cout << *p << " "; } cout << endl; system("pause"); return 0; }
    Processed: 0.012, SQL: 9