输入n个整数,输出其中最小的k个

输入n个整数,输出其中最小的k个。 

详细描述:

接口说明

原型:

bool GetMinK(unsignedint uiInputNum, int *pInputArray, unsignedint uiK, int * pOutputArray);

输入参数:

unsignedint uiInputNum //输入整数个数

int * pInputArray  //输入整数数组

unsignedint uiK   //需输出uiK个整数

输出参数(指针指向的内存区域保证有效):

 int * pOutputArray //最小的uiK个整数

返回值: 

        false 异常失败

         true  输出成功

知识点:  循环,数组 

题目来源:  内部整理 

练习阶段:  初级 

运行时间限制: 10Sec

内存限制: 128MByte

输入: 

输入说明

1 输入两个整数

2 输入一个整数数组 

输出: 

输出一个整数数组

样例输入: 5 2

1 3 5 7 2                   

样例输出: 1 2

#include<iostream>
using namespace std;


int main()
{
int k,n,tmp;
cin>>n>>k;
int arr[100]={0};
for(int i=0;i<n;i++)
{
cin>>arr[i];
}
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(arr[i]>arr[j])
{
tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
}
for(int i=0;i<k-1;i++)
{
cout<<arr[i]<<" ";
}
cout<<arr[k-1]<<"\n";
return 0;
}//值得注意的是最后的输出不知道为什么要换行,每个值之间要空格

第二种做法:

#include<stdio.h>
#include <iostream> 
using namespace std;
struct Arr
{
 int *pBase;//存储数组第一个元素的地址
// int len;  //元素个数 
};


int main(void)
{
  int len,k;
  struct Arr arr;
  struct Arr * prr;
  prr=&arr;
  cin>>len;
  cin>>k;
  prr->pBase=(int*)malloc(sizeof(int)*len);
  for(int i=0;i<len;i++)
  {
int a;
cin>>a;
prr->pBase[i]=a;
  }
  for(int i=0;i<len;i++)
  {
 for(int j=i+1;j<len;j++)
 {
   if(prr->pBase[i]>prr->pBase[j])
{
int t;
t=prr->pBase[i];
prr->pBase[i]=prr->pBase[j];
prr->pBase[j]=t;
}
 
 }
  }
 for(int i=0;i<k;i++)
 {
   cout<<prr->pBase[i];
 }
  return 0;
}//这种方法是链表的思路来用的数组其实比较麻烦,但是理论来说内存的管理会比较好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值