voidmerge_sort(vector<int>&vec,int lo,int hi){for(int seg =1; seg < vec.size(); seg += seg)//步长,亦或是子数组的sizefor (int i = lo; i < vec.size()- seg; i += seg + seg){int lo =min(i, vec.size());int mid =min(i + seg -1, vec.size());int hi =min(i +2* seg -1, vec.size()-1);merge(vec, lo, mid, hi);}}
merge函数void merge(vector<int> &vec, int lo, int mid, int hi) { vector<int> save; //临时数组 std::copy(vec.begin(), vec.end(), back_inserter(save)); int i = lo, j = mid + 1; for (int k = lo; k <= hi; k++) { //从lo向h