求给定一个数组经过降序排序之后前30中最小的数。用c++实现
以下是一个可能的实现:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, arr + n, greater<int>()); // 降序排序
int k = n * 0.3; // 找到前30%的位置
int min_val = arr[k]; // 取出该位置的值
cout << "前30%中最小的数是:" << min_val << endl;
return 0;
}
输出:
前30%中最小的数是:7
解释:
- 给定数组为 {9, 8, 7, 6, 5, 4, 3, 2, 1},共有9个元素。
- 经过降序排序之后,数组变为 {9, 8, 7, 6, 5, 4, 3, 2, 1}。
- 前30%的位置为 0.3 * 9 = 2.7,向下取整为2,即前两个元素是前30%的元素。
- 数组中第2个元素的值为7,即为前30%中最小的数
原文地址: https://www.cveoy.top/t/topic/gh2e 著作权归作者所有。请勿转载和采集!