注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
brack的个人空间 https://home.eeworld.com.cn/space-uid-1389687.html [收藏] [复制] [分享] [RSS]
日志

[嵌入式Rust修炼营] 初级 任务1:冒泡排序法实现排序

已有 132 次阅读2025-3-29 20:29 |个人分类:经验记录

初步入门Rust,跟着大咖学习Rust

算法逻辑(使用双循环):

1.外层循环控制排序轮数

2.内层循环比较相邻数据大小

3.使用一个标志位,表示当前轮排序是否有变动,若没有变动,数据已经有序,可以提前结束

简单粗暴,直接上code:

fn optimized_bubble_sort<T: PartialOrd>(arr: &mut [T]) {
    let len = arr.len();
    // 外层循环控制排序轮数
    for i in 0..len {
        // 设置标志位,表示本轮是否发生交换
        let mut swapped = false;
        
        // 内层循环比较相邻元素
        for j in 0..len - i - 1 {
            // 如果前一个元素比后一个大,则交换它们
            if arr[j] > arr[j + 1] {
                arr.swap(j, j + 1);
                swapped = true;
            }
        }
        
        // 如果本轮没有发生交换,说明数组已经有序,可以提前结束
        if !swapped {
            break;
        }
    }
}
fn main() {

   // 测试整数
   let mut numbers = [64, 34, 25, 12, 22, 11, 90];
   println!("排序前数组: {:?}", numbers);
   optimized_bubble_sort(&mut numbers);
   println!("排序后数组: {:?}", numbers);


   // 测试已经有序的数组
   let mut already_sorted = [1, 2, 3, 4, 5];
   println!("排序前数组: {:?}", already_sorted);
   optimized_bubble_sort(&mut already_sorted);
   println!("排序后数组: {:?}", already_sorted);
}

测试结果如下:

   

实验心得:

基本语法的学习,初步使用泛型写函数,极大提升了编写效率

 

本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章