美文网首页
Rust语言编程实例100题-037

Rust语言编程实例100题-037

作者: L我是小学生 | 来源:发表于2021-07-28 17:38 被阅读0次

    Rust语言编程实例100题-037

    题目:排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。这道题就来考察下排序,对下面的10个数进行排序。

    [1, 4, 3, 6, 8, 2, 9, 0, 7, 5]
    

    程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。也可以利用插入排序法等等。

    输出格式:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

    知识点:数据结构简单排序(选择排序,插入排序)

    fn main() {
        let mut vec = vec![1, 4, 3, 6, 8, 2, 9, 0, 7, 5];
        // test37_insert_sort(&mut vec);
        test37_select_sort(&mut vec);
        println!("{:?}", vec);
    }
    
    /// 插入排序
    fn test37_insert_sort(vec: &mut Vec<i32>) {
        for i in 0..vec.len() {
            let mut j = i;
            while j > 0 {
                if vec[j] < vec[j - 1] {
                    // 交换值
                    let temp = vec[j];
                    vec[j] = vec[j - 1];
                    vec[j - 1] = temp;
                }
                j -= 1;
            }
        }
    }
    
    /// 选择排序
    fn test37_select_sort(vec: &mut Vec<i32>) {
        for i in 0..vec.len() - 1 {
            let mut mix_index = i;
            for j in i + 1..vec.len() {
                if vec[mix_index] > vec[j] {
                    mix_index = j;
                }
            }
    
            // 如果找到了比当前小的值
            // 交换
            if mix_index != i {
                let temp = vec[i];
                vec[i] = vec[mix_index];
                vec[mix_index] = temp;
            }
        }
    }
    

    程序执行结果:

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    

    相关文章

      网友评论

          本文标题:Rust语言编程实例100题-037

          本文链接:https://www.haomeiwen.com/subject/jonzmltx.html