题目描述:
输入n个整数,输出其中最小的k个。例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4。
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int partition(int str[],int lo,int hi)
{
int key = str[hi];
int i = lo - 1;
for(int j = lo; j < hi; j++)
{
if(str[j] <= key)
{
i++;
swap(str[i], str[j]);
}
}
swap(str[i+1], str[hi]);
return i + 1;
}
void quicksort(int str[], int lo, int hi)
{
if (lo < hi)
{
int k = partition(str, lo, hi);
quicksort(str, lo, k - 1);
quicksort(str, k + 1, hi);
}
}
void print(int str[],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<str[i];
}
}
int main()
{
int i;
int str1;
int str[] = {1,4,5,2,3};
quicksort(str,0,4);
cin>>str1;
for(i=0;i<5;i++)
{
if(str1<str[i])
{
print(str,i);
break;
}
}
return 0;
}