2325: 查找【数组】
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 378 Solved: 136
[Submit][Status][Web Board]
Description
利用search(a,n,k)函数在数组a的前n(n>=1)个元素中找出前k个(1<=k<=n)小的值。假设数组a中各元素的值都不相同。
Input
数组中各元素
n k
Output
a中前k个小的值
Sample Input
5 6 2 1 4 85 78 11
7 4
Sample Output
5 2 1 4
HINT
Source
#include<stdio.h> int main() { int a[20],c[20],n,i,j,k,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-1;i++) for(j=0;j<n-1-i;j++) { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } }//对a[i]进行排序// for(i=0;i<n;i++) { if(c[i]<=a[k-1])//此时a[i]从小到大排列,取k个较小数,则这些数中最大的就是a[k-1]// printf("%d ",c[i]); } return 0; }