适合强数据类型的归并排序算法 #include<stdio.h> #define N 100010 int n, nums[N]; void merge_sort(int nums[], int l, int r) { if(l >= r) return; int mid = l + r >> 1, i = l, j = mid + 1, temp[r - l], k = 0; merge_sort(nums, i, mid); merge_sort(nums, j, r); while(i <= mid && j <= r) { if(nums[i] < nums[j]) temp[k++] = nums[i++]; else temp[k++] = nums[j++]; } while(i <= mid) temp[k++] = nums[i++]; while(j <= r) temp[k++] = nums[j++]; for(int i = 0; i < k; i++) nums[l++] = temp[i]; } int main() { scanf("%d", &n); for(int i = 0; i < n; i++) scanf("%d", &nums[i]); merge_sort(nums, 0, n - 1); for(int i = 0; i < n; i++) printf("%d ", nums[i]); }