
代码在内存中的运行图如上
代码如下
#include<stdio.h>
int tem[11] = { 0 };
void merge_sort(int arr[], int min, int max)
{
if (min >= max) { return; }
int mid = (min + max) / 2;
merge_sort(arr, min, mid);
merge_sort(arr, mid + 1, max);
int k = 0, i = min, j = mid + 1;
while (i <= mid && j <= max)
if (arr[i] <= arr[j]) { tem[k++] = arr[i++]; }
else { tem[k++] = arr[j++]; }
while (i <= mid) { tem[k++] = arr[i++]; }
while (j <= max) { tem[k++] = arr[j++]; }
for (i = min, j = 0; i <= max; i++, j++) { arr[i] = tem[j]; }
}
int main() {
int arr[11] = { 2,0,2,3,0,3,3,1,1,7,7 };
merge_sort(arr, 0, 10);
for (int i = 0; i < 11; i++) { printf("%d ",arr[i]); }
}
1385

被折叠的 条评论
为什么被折叠?



