BC121. 有序序列合并
描述
输入描述
输入包含三行,输出描述
输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。示例1
输入:
5 6 1 3 7 9 22 2 8 10 17 33 44
输出:
1 2 3 7 8 9 10 17 22 33 44
C 解法, 执行用时: 1ms, 内存消耗: 292KB, 提交时间: 2021-09-08
#include <stdio.h> int main() { int a,b,c[100],temp; scanf("%d",&a); scanf("%d",&b); for(int i=1;i<=a+b;i++){ scanf("%d",&c[i]); } for (int i = 1; i <= a+b; i++) { for (int j = 1; j <= a+b - i; j++) { if (c[j] > c[j + 1]) { temp = c[j]; c[j] = c[j + 1]; c[j + 1] = temp; } } } for(int i=1;i<a+b+1;i++){ printf("%d ",c[i]); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 328KB, 提交时间: 2021-09-09
#include<stdio.h> #include<stdlib.h> int main() { //int a, b; //scanf("%d %d", &a, &b); //int* p1 = (int*)malloc(a * sizeof(int)); //int* p2 = (int*)malloc(b * sizeof(int)); //int i; //for (i = 0; i < a; i++) //{ // p1[i] = scanf("%d", p1 + i); //} //for (i = 0; i < b; i++) //{ // p2[i] = scanf("%d", p2 + i); //} // ////合并p2和p3 //int* p3 = (int*)malloc((a + b) * sizeof(int)); //for (i = 0; i < a + b; i++) //{ // if (i < a) // p3[i] = p1[i]; // else // p3[i] = p2[i - a]; //} int a, b; scanf("%d %d", &a, &b); int p1[100] = { 0 }; int p2[100] = { 0 }; int i; for (i = 0; i < a; i++) { scanf("%d", p1+i); } for (i = 0; i < b; i++) { scanf("%d", p2+i); } int p3[200] = { 0 }; for (i = 0; i < a + b; i++) { if (i < a) p3[i] = p1[i]; else p3[i] = p2[i - a]; } //冒泡排序 for (i = 0; i < a + b; i++) { int j = 0; for (j = 0; j < a + b - 1 - i; j++) { if (p3[j] > p3[j + 1]) { int tmp = p3[j]; p3[j] = p3[j + 1]; p3[j + 1] = tmp; } } } //打印 for (i = 0; i < a + b; i++) { printf("%d ", p3[i]); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 332KB, 提交时间: 2021-09-19
#include <stdio.h> #include <string.h> int compare(const void*e1,const void*e2) { int* a = (int*) e1; int* b = (int*) e2; return *a - *b; } void scan(int arr1[],int arr2[],int arr3[],int n,int m) { int i; int j; for(i=0,j=0;i<n;i++,j++) { scanf("%d",&arr1[i]); arr3[j]=arr1[i]; } for(i=0;i<m;i++,j++) { scanf("%d",&arr2[i]); arr3[j]=arr2[i]; } } int main() { int i; int arr1[5000]; int arr2[5000]; int arr3[5000]; int n,m; scanf("%d%d",&n,&m); scan(arr1,arr2,arr3,n,m); qsort(arr3,n+m,sizeof(int),compare); for(i=0;i<m+n;i++) { printf("%d ",arr3[i]); } return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 332KB, 提交时间: 2021-09-08
#include <stdio.h> int main() { int x,y; scanf("%d %d",&x,&y); int arr[x+y]; for(int i = 0;i < x+y;i++) { scanf("%d",&arr[i]); } for(int i = 0;i < x+y-1;i++) { for(int j = 0;j < x+y-1-i;j++) { if(arr[j] > arr[j+1]) { int m = arr[j]; arr[j] = arr[j+1]; arr[j+1] = m; } } } for(int i = 0;i < x+y;i++) { printf("%d ",arr[i]); } }
C 解法, 执行用时: 1ms, 内存消耗: 332KB, 提交时间: 2021-09-07
#include<stdio.h> int main() { int n,m,i,j,a=0,b=0,c=0; scanf("%d %d",&n,&m); int arr1[n],arr2[m],arr3[m+n]; for(i=0;i<n;i++) { scanf("%d",&arr1[i]); } for(j=0;j<m;j++) { scanf("%d",&arr2[j]); } while(a<n&&b<m) { if(arr1[a]<arr2[b]) arr3[c++]=arr1[a++]; else arr3[c++]=arr2[b++]; } while(a<n) { arr3[c++]=arr1[a++]; } while(b<m) { arr3[c++]=arr2[b++]; } for(i=0;i<n+m;i++) { printf("%d ",arr3[i]); } return 0; }