#include <stdio.h> int main() { //由于存在多组数据,循环读取 while(1) { //读取数据数量及输出数量 int m,n; //循环跳出判断,未尾跳出循环 if(scanf("%d %d",&m,&n)==EOF) break; int i=0; //堆上分配内存 int * ptr=malloc(sizeof(int)*m); //循环读入m个数据 while(i<m) { scanf("%d ",ptr+i); ++i; } //对m个堆上数据进行排序 for(int j=0;j<m-1;++j) for(int k=j+1;k<m;++k) { if(ptr[j]>ptr[k]) { int temp=ptr[j]; ptr[j]=ptr[k]; ptr[k]=temp; } } //输出前n个数据 for(int j=0;j<n;++j) printf("%d ",ptr[j]); printf("\n"); //释放堆内存 free(ptr); ptr=NULL; } return 0; }