hrp 发表于 2021-3-21 11:40:09

[Rust 编程语言]练习题一

本帖最后由 hrp 于 2021-3-21 12:22 编辑

初学摸索阶段,暴力求解

// ### 练习:
// 给定一系列数字,使用 vector
// 并打印这个列表的平均数(mean, average)、
// 中位数(排列数组后位于中间的值)和
// 众数(mode,出现次数最多的值;这里哈希函数会很有帮助)。

use std::collections::HashMap;

fn main() {
    let mut shuzi = vec!;
    let (average, mid_num, mode_list) = solution(&mut shuzi);
    println!(
      "列表:{:?}\n中位数:{}\n众数:{:?}\n平均数:{}",
      &shuzi, &mid_num, &mode_list, &average,
    );
}

fn solution(list: &mut Vec<i32>) -> (f64, i32, Vec<i32>) {
    // 排序
    list.sort();
    // 列表长度
    let length = list.len();
    // 中位数
    let mid_num = list;
    // 求列表数和
    let sum: i32 = list.iter().sum();
    // 求平均数
    let average: f64 = sum as f64 / length as f64;
    // 新建空哈希表用于储存列表中每个数字出现次数
    let mut mode_m: HashMap<i32, u32> = HashMap::new();
    // 新建可变变量max_count储存任意数字出现的最大次数
    let mut max_count = 0;
    // 新建一个储存众数的空列表
    let mut mode_list: Vec<i32> = Vec::new();
    // 遍历列表,计算数字出现次数
    for i in list.clone() {
      let count = mode_m.entry(i).or_insert(0);
      *count += 1;
      // 如果count大于等于max_count
      if *count > max_count {
            // 最大出现次数max_count更新为count
            max_count = *count;
      }
    }
    // 遍历list
    for value in list {
      // 当前数字出现次数count
      let count = mode_m.get(value).unwrap();
      // 如果当前数字出现次数等于max_count且mode_list中没有value
      if (*count == max_count) && !mode_list.contains(value) {
            // 则将该数字value加入众数列表mode_list
            mode_list.push(*value);
      }
    }
    // 返回结果,也可以写成 return (average, mid_num, mode_list);
    (average, mid_num, mode_list)
}

Cool_Breeze 发表于 2021-3-24 16:33:56

Rust 是面向对象的吗?

hrp 发表于 2021-3-24 17:27:06

Cool_Breeze 发表于 2021-3-24 16:33
Rust 是面向对象的吗?

有的说Rust是面向对象的,有的说不是,但面向对象的概念在Rust中是很容易实现的,只是方法不同,没有像其他语言的class这种常见的关键字而已。

Cool_Breeze 发表于 2021-3-25 11:13:26

hrp 发表于 2021-3-24 17:27
有的说Rust是面向对象的,有的说不是,但面向对象的概念在Rust中是很容易实现的,只是方法不同,没有像其 ...

了解了。多学几门语言可以学到很多不同编程思想!很赞!

qiyuewuxi 发表于 2022-4-30 11:37:49

Cool_Breeze 发表于 2021-3-24 16:33
Rust 是面向对象的吗?

Rust是一门面向程序员的语言{:5_90:}

hornwong 发表于 2022-4-30 11:48:19

{:5_95:}
页: [1]
查看完整版本: [Rust 编程语言]练习题一