template<typename T>
void mergeArray(vector<T> &arr, int first, int mid, int last)
{
vector<T> arr_tmp(arr);
int i = first, j = mid + 1, k = first;
while(i <= mid && j <= last)
{
if(arr_tmp[i] < arr_tmp[j])
arr[k++] = arr_tmp[i++];
else
arr[k++] = arr_tmp[j++];
}
while(i <= mid) arr[k++] = arr_tmp[i++];
while(j <= last) arr[k++] = arr_tmp[j++];
}
template<typename T>
void mergeSort(vector<T> &arr, int first, int last)
{
if(first < last)
{
int mid = (first + last) / 2;
mergeSort(arr, first, mid);
mergeSort(arr, mid + 1, last);
mergeArray(arr, first, mid, last);
}
}
MergeSort -- 归并排序(C++)
最新推荐文章于 2022-03-19 00:16:37 发布