输入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]); } }