一组无序的整数,编程输出次数最多的整数及其出现次数,若出现次数最多的整数有多个,则按照升序分行输出

2025-03-04 12:10:51
推荐回答(2个)
回答1:

$arr = array(48, 48, 48, 12, 61, 3, 5, 19, 32, 7, 7, 7, 12, 12, 12);

function func($array)
{
    $array = array_count_values($array);  //统计数组中所有值出现的次数
    arsort($array); //按照键值对关联数组进行降序排序

    $arrKey = array();  //保存出现最多的组合
    foreach ($array as $key => $val) {
        if ($val == reset($array)) {
            $arrKey[$key] = $val;
        }
    }
    ksort($arrKey); //按键值升序排列

    foreach ($arrKey as $key => $value) {
        echo $key . "出现:" . $value . "次
";
    }
}

func($arr);

不知道你用的什么语言,这个用php实现的,比较简单

回答2:

#include #include using namespace std; #define NUM 1024 int main(void) { // 一次过可输入1024个数字 int data[NUM], n = 0; int i, j, k; int times[NUM], visited[NUM], max; while (cin.peek() != '\n') { cin >> data[n]; ++n; if (n == NUM) break; } for (i = 0; i < n; ++i) { visited[i] = 0; times[i] = 1; } for (i = 0; i < n; ++i) { if (!visited[i]) { for (j = i + 1; j < n; ++j) { if ((data[i] == data[j]) && !visited[j]) { visited[j] = 1; ++times[i]; } } } visited[i] = 1; } max = times[0]; k = 0; for (i = 1; i < n; ++i) { if (times[i] > max) { max = times[i]; k = i; } } cout << data[k] << endl; return 0; }