以下是一个可能的实现:

#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%中最小的数
求给定一个数组经过降序排序之后前30中最小的数。用c++实现

原文地址: https://www.cveoy.top/t/topic/gh2e 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录