OR60. n个数里最小的k个
描述
找出n个数里最小的k个输入描述
每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n 不超过100。输出描述
输出n个整数里最小的k个数。升序输出示例1
输入:
3 9 6 8 -10 7 -11 19 30 12 23 5
输出:
-11 -10 3 6 7
C 解法, 执行用时: 1ms, 内存消耗: 300KB, 提交时间: 2020-08-04
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 100 int main() { int a[N + 1]; int i = 0,j = 0; int len = 0; int temp; while (scanf("%d", a + i) != EOF) { i++; } len = i - 1; int k = a[i - 1]; for(i=0;i<len;i++){ for(j=i+1;j<len;j++){ if (a[i]>a[j]){ temp=a[i]; a[i]=a[j]; a[j]=temp; } } } for(i=0;i<k;i++){ if(i<k-1) printf("%d ",a[i]); else printf("%d",a[i]); } printf("\n"); return 0; }
C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2018-08-24
#include <stdio.h> #include <stdlib.h> #include <string.h> #define N 100 int main() { int a[N + 1]; int i = 0,j = 0; int len = 0; int temp; while (scanf("%d", a + i) != EOF) { i++; } len = i - 1; int k = a[i - 1]; for (i = 0; i<len; i++) { for(j = i + 1;j < len; j++) { if (a[i] > a[j]) { temp = a[i]; a[i] = a[j]; a[j] = temp; } } } for (i = 0;i<k; i++) { if (i<k - 1) printf("%d ", a[i]); else printf("%d", a[i]); } printf("\n"); return 0; }