华为OJ平台试题 —— 数组:输入n个整数,输出其中最小的k个

来源:互联网 发布:中级java工程师薪资 编辑:程序博客网 时间:2024/05/23 13:03

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




0 1