输入n个整数。输出当中最小的k个:
代码:
/*
* 输入n个整数,输出当中最小的k个。 * 输入说明:1、输入两个整数;2、输入一个整数数组
* 输出说明:输出一个整数数组
*/
<pre name="code" class="cpp">#include<stdio.h>
/*
* 功能:输入 n 个整数。输出当中最小的k个
*
* 输入參数:unsigned int uiInputNum 输入整数个数
*<span style="white-space:pre"> </span> int * pInputArray<span style="white-space:pre"> </span> 输入整数数组
*<span style="white-space:pre"> </span> unsigned int uiK<span style="white-space:pre"> </span> 需输出uiK个整数
* 输出參数:int * pOutputArray 指针指向的内存区域保证有效。最小的uiK个整数
*
*/
void GetMinK(unsigned int uiInputNum, int * pInputArray, unsigned int uiK, int * pOutputArray)
{
int temp = 0;
int i, j; for( i=0; i < uiInputNum; i++)
{
for( j=i+1; j < uiInputNum; j++)
{
if ( *(pInputArray+i) > *(pInputArray+j) )
{
temp = *(pInputArray+j);
*(pInputArray+j) = *(pInputArray+i);
*(pInputArray+i) = temp;
}
}
} for( i=0; i < uiK; i++ )
{
*(pOutputArray+i)=*(pInputArray+i);
}
} int main(void)
{
unsigned int i, j, Num, k;
int ai[255], ao[255]; scanf("%d", &Num);
scanf("%d", &k); for( i = 0; i < Num; i++)
{
scanf("%d",&ai[i] );
} GetMinK( Num, ai, k, ao); for ( j = 0; j < k; j++)
{
printf("%d ", ao[j]);
}
}