本人是编程新手,为了考研和后续的学习而已。
平台的文本编辑不会用,时间紧迫不想在花时间学习平台的编辑器。
所以直接复制粘贴过来,免费分享。
因为都是自己的理解,都是大白话,所以有一些地方表述不合适或不够准确的请大佬帮忙更正。
更加希望有前辈指教,学生定虚心学习。
#include <stdio.h>
const int N = 10000;
int arr[N],tmp[N];
void merge_sort(int arr[], int left, int right){
if(left >= right){
return;
}
int mid = left + right >> 1;
merge_sort(arr, left, mid), merge_sort(arr, mid+1, right);
int k = 0, i = left, j = mid + 1;
while (i <= mid && j <= right){
if(arr[i] <= arr[j]){
tmp[k++] = arr[i++];
} else{
tmp[k++] = arr[j++];
}
}
while (i <= mid){
tmp[k++] = arr[i++];
}
while (j <= right){
tmp[k++] = arr[j++];
}
for(i = left, j =0; i <= right; i++,j++){
arr[i] = tmp[j];
}
}
int main(void) {
int n;
scanf("%d", &n);
for(int i = 0;i < n; i++){
scanf("%d", &arr[i]);
}
merge_sort(arr, 0, n-1);
for (int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
return 0;
}