题目:输入n个整数,输出其中最小的k个。
例如:输入1,2,3,4,5,6,7,8这8个数字,则最小的4个数字为1,2,3,4
#include <iostream> using namespace std; const int N = 10000; int partition(int *a, int b, int e) { int i = b - 1; for(int j = b; j < e; j++) { if(a[j] < a[e]) { i++; //交换a[i]和a[j] int tem = a[i]; a[i] = a[j]; a[j] = tem; } } //a[i+1]和a[e]交换 int tem = a[i + 1]; a[i + 1] = a[e]; a[e] = tem; return i + 1; //返回合适位置 } void qsort(int *a, int start, int end) { if(start < end) { int q = partition(a,start,end); qsort(a, start, q-1); qsort(a, q+1, end); } } void fun(int *a, int size, int k) { qsort(a, 0, size - 1); //对a数组进行快速排序 for(int i = 0; i < k; i++) //输出前k个最小的数 cout << a[i] << " "; cout << endl; } int main() { int a[] = {3,4,8,2,1,99}; fun(a, 6, 3); return 0; }