归并排序算法:
/* 归并排序,算法时间复杂度为:O(nlogn), 稳定排序算法 Written by: Qinchao Time:2016/12/3 Language: C++ */ const int INFTY = 2147483647; void merge(vector<int> &_num, int left, int mid, int right ) { int n1 = mid - left + 1; int n2 = right - mid; vector<int> L(n1+1); for (int i = 0; i < n1; i++) L[i] = _num[left+i]; L[n1] = INFTY;//无穷数 vector<int> R(n2+1); for (int i = 0; i < n2; i++) R[i] = _num[mid+i+1]; R[n2] = INFTY;//无穷数 int i = 0, j = 0; for (int k = left; k <= right; k++) { if (L[i] <= R[j]) { _num[k] = L[i]; i++; } else { _num[k] = R[j]; j++; } } } void mergesort_9(vector<int> &_snum, int sleft, int sright) { if (sleft < sright) { int q = (sleft + sright) / 2; mergesort_9(_snum, sleft, q); mergesort_9(_snum, q + 1, sright); merge(_snum, sleft, q, sright); } }