问题描述:利用search(a,n,k)函数在数组a的前n(n>=1)个元素中找出前k个(1<=k<=n)小的值。假设数组a中各元素的值都不相同。
作者;h何知令
作者;h何知令
完成时间:2017年4月25日
代码:
/*
问题描述:利用search(a,n,k)函数在数组a的前n(n>=1)个元素中找出前k个(1<=k<=n)小的值。假设数组a中各元素的值都不相同。
作者;h何知令
完成时间:2017年4月25日
*/
#include <stdio.h>
#include <stdlib.h>
void search(int a[],int n,int k)程序
{
int state[n];
int max=a[0],min=a[0];
int left=n;
int i,place;
for(i=0; i<n; i++)
{
state[i]=0;
if(a[i]<min)
min=a[i];
}
while(left>k)
{
max=min;
for(i=0; i<n; i++)
{
if(a[i]>=max&&state[i]==0)
{
max=a[i];
place=i;
}
}
if(a[place]!=min)
{
state[place]=1;
left--;
}
}
for(i=0; i<n; i++)
{
if(state[i]==0)
{
printf("%d",a[i]);
if(i!=k)
printf(" ");
}
}
}
int main()
{
int a[100];
int i=0;
int m,n;
char C;
while(C!='\n')
{
scanf("%d%c",&a[i],&C);
i++;
}
scanf("%d %d",&m,&n);
search(a,m,n);
return 0;
}
程序运行结果展示:
知识点总结:数组和打表
学习心得:估计是最笨的办法