Rust语言编程实例100题-037

这篇博客通过Rust语言展示了如何实现两种排序算法——插入排序和选择排序,对给定的整数数组进行排序。示例代码详细地解释了每种排序方法的逻辑,并最终输出了排序后的数组[0,1,2,3,4,5,6,7,8,9]。

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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

uuuhhhyyy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值