题解 | #输入n个整数,输出其中最小的k个# 冒泡&快速
输入n个整数,输出其中最小的k个
https://www.nowcoder.com/practice/69ef2267aafd4d52b250a272fd27052c
//太繁琐
#include <stdio.h>
#include <string.h>
int main() {
int str[1001] = {0};
int n=0,k=0,i=0;
scanf("%d %d", &n, &k);
int t = n;
while(n>0)
{
scanf("%d",&str[i++]);
n--;
}
//int len = strlen(str);
for(int j = 0; j<t; j++)
{
for(int m = j+1; m<t; m++)
{
if(str[j] > str[m])
{
int temp;
temp = str[j];
str[j] = str[m];
str[m] = temp;
}
}
}
for(int j = 0; j<k; j++)
{
printf("%d ", str[j]);
}
str[k] = '\0';
return 0;
}
//转别人qsort排序,代码量少点
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
if(*(int*)a > *(int*)b)
return 1;
else
return -1;
}
int main() {
int n=0,k=0,i=0;
scanf("%d %d\n", &n, &k);
int str[n];
for(int i = 0; i<n; i++)
{
scanf("%d", &str[i]);
}
qsort(str,n,sizeof(int),cmp);
for(int i = 0; i<k; i++)
{
printf("%d ", str[i]);
}
return 0;
}

查看8道真题和解析