题解 | #有序序列合并#
有序序列合并
https://www.nowcoder.com/practice/a9e943b0dab142759807d0cfb6863897
#include<stdlib.h> int cmp_int(const void* e1, const void* e2) { //规定e1<e2时,返回负数;e1=e2,返回0;e1>e2,返回正数;这样这里就是实现的升序效果 //若想实现降序,e1<e2时,返回正数;e1=e2,返回0;e1>e2,返回负数 //void类型的指针可接受任意类型的指针,缺点是无法进行计算 return *(int*)e2 - *(int*)e1; } int main() { int arr[2000] = { 0 }; int n = 0; int m = 0; scanf("%d %d", &n, &m); int i = 0; for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } for (i = n; i < n + m; i++) { scanf("%d", &arr[i]); } qsort(arr,sizeof(arr)/sizeof(arr[0]),sizeof(arr[0]),cmp_int); for (i = n + m - 1; i >= 0; i--) { printf("%d ", arr[i]); } return 0; }