问题及代码
题目描述
利用search(a,n,k)函数在数组a的前n(n>=1)个元素中找出前k个(1<=k<=n)小的值。假设数组a中各元素的值都不相同。
输入
数组中各元素
n k
输出
a中前k个小的值
样例输入
5 6 2 1 4 85 78 11
7 4
样例输出
5 2 1 4
代码
/*烟台大学计算机与控制工程学院 2016 作者: 马春澎 题目名称:oj 2325 Problem C 查找【数组】 完成日期:2017年3月31日 */ #include<stdio.h> int main() { int a[20],c[20]; int i,j,k,n,temp; char x; for(i=0; i<20; i++) { scanf("%d%c",&a[i],&x); if(x=='\n') break; } scanf("%d%d",&n,&k); for(i=0; i<n; i++) c[i]=a[i]; for(i=0; i<n; i++) { for(j=0; j<n-i-1; j++) { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } for(i=0; i<n; i++) { if(c[i]<=a[k-1]&&i<k) printf("%d ",c[i]); else if(c[i]<=a[k-1]&&i==k) printf("%d",c[i]); } return 0; }
总结:可先将数组进行排序找到第k个数,然后与原数组进行比较,原数组中小于他的输出,注意最后一个数后面没有空格。