归并排序,简单,直接见代码:
void merge_sort(int* A, int l, int r, int* T){
if(r - l > 1){
int m = (l+r) >> 1;
merge_sort(A, l, m, T);
merge_sort(A, m, r, T);
int i = l, j = m, k = l;
while(i < m && j < r){
if(A[i] < A[j]){
T[k++] = A[i++];
}else{
T[k++] = A[j++];
}
}
while(i < m){
T[k++] = A[i++];
}
while(j < r){
T[k++] = A[j++];
}
//赋值回去
for(i = l; i < r; i++){
A[i] = T[i];
}
}
}