最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Rust實(shí)現(xiàn)冒泡排序算法示例詳解

 更新時(shí)間:2023年08月15日 10:36:05   作者:刀法如飛  
這篇文章主要為大家介紹了Rust實(shí)現(xiàn)冒泡排序算法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

rust因其安全性和易用性,未來(lái)將取代C與C++。那么rust學(xué)習(xí)起來(lái)困難嗎?其實(shí)很簡(jiǎn)單,請(qǐng)看一下代碼。

冒泡排序升序

/**
 * 冒泡排序升序,將最大的冒泡到最后
 */
fn bubble_sort1<T: Ord>(arr: &mut [T]) -> &mut [T] {
  let len = arr.len();
  println!("array size is {:?}", arr.len());
  for i in 0..len {
    println!("i:{}", i);
    for j in 0..len - i - 1 {
      println!("i=:{}, j=:{}", i, j);
      if arr[j] > arr[j + 1] {
        // 可以直接使用swap
        arr.swap(j, j + 1);
      }
    }
  }
  // println!("array is sorted {:?}", arr);
  return arr;
}

冒泡排序降序

/**
 * 冒泡排序降序,將最小的冒泡到最后。
 * 且增加是否交換的標(biāo)志,針對(duì)已排序做優(yōu)化。
 */
fn bubble_sort2<T: Ord>(arr: &mut [T]) -> &mut [T] {
  let len = arr.len();
  let mut flag = true;
  let mut i = 0;
  while i < len && flag == true {
    flag = false;
    println!("i:{}", i);
    for j in 0..len - i - 1 {
      // 當(dāng)前項(xiàng)跟后一項(xiàng)進(jìn)行比較,如果需要交換
      // 當(dāng)沒(méi)有任何一項(xiàng)需要交換時(shí)則終止循環(huán)
      println!("i=:{}, j=:{}", i, j);
      if arr[j] < arr[j + 1] {
        flag = true;
        arr.swap(j, j + 1);
      }
    }
    i = i + 1;
  }
  return arr;
}
fn main() {
  println!("bubbleSort:");
  let mut data1 = [2, -1, 10, 5, 8, 11];
  println!("sort1 before: {:?}", data1);
  bubble_sort1(&mut data1);
  println!("sort1 after: {:?}", data1);
  let mut data2 = [2, -1, 10, 5, 8, 11];
  println!("sort2 before: {:?}", data2);
  bubble_sort2(&mut data2);
  println!("sort2 after: {:?}", data2);
}

結(jié)果

/*
jarry@jarrys-MacBook-Pro rust % rustc -V  
rustc 1.51.0 (2fd73fabe)
jarry@jarrys-MacBook-Pro bubblesort % rustc ./bubble_sort.rs
jarry@jarrys-MacBook-Pro bubblesort % ./bubble_sort
bubbleSort:
sort1 before: [2, -1, 10, 5, 8, 11]
array size is 6
i:0
i=:0, j=:0
i=:0, j=:1
i=:0, j=:2
i=:0, j=:3
i=:0, j=:4
i:1
i=:1, j=:0
i=:1, j=:1
i=:1, j=:2
i=:1, j=:3
i:2
i=:2, j=:0
i=:2, j=:1
i=:2, j=:2
i:3
i=:3, j=:0
i=:3, j=:1
i:4
i=:4, j=:0
i:5
sort1 after: [-1, 2, 5, 8, 10, 11]
sort2 before: [2, -1, 10, 5, 8, 11]
i:0
i=:0, j=:0
i=:0, j=:1
i=:0, j=:2
i=:0, j=:3
i=:0, j=:4
i:1
i=:1, j=:0
i=:1, j=:1
i=:1, j=:2
i=:1, j=:3
i:2
i=:2, j=:0
i=:2, j=:1
i=:2, j=:2
i:3
i=:3, j=:0
i=:3, j=:1
i:4
i=:4, j=:0
i:5
sort2 after: [11, 10, 8, 5, 2, -1]
*/

更多語(yǔ)言冒泡算法源碼,請(qǐng)?jiān)L問(wèn)

https://github.com/microwind/algorithms

希望大家以后多多支持腳本之家!

相關(guān)文章

  • Rust中使用Serde對(duì)json數(shù)據(jù)進(jìn)行反序列化

    Rust中使用Serde對(duì)json數(shù)據(jù)進(jìn)行反序列化

    JSON作為目前流行的數(shù)據(jù)格式之一,被大家廣泛使用,在日常的開(kāi)發(fā)實(shí)踐中,將JSON數(shù)據(jù)反序列化為對(duì)應(yīng)的類型具有重要的意義,在Rust中,Serde幾乎成了JSON數(shù)據(jù)解析的事實(shí)標(biāo)準(zhǔn),本文將給大家介紹Rust中使用Serde對(duì)json數(shù)據(jù)進(jìn)行反序列化,需要的朋友可以參考下
    2024-01-01
  • 詳解Rust中三種循環(huán)(loop,while,for)的使用

    詳解Rust中三種循環(huán)(loop,while,for)的使用

    我們常常需要重復(fù)執(zhí)行同一段代碼,針對(duì)這種場(chǎng)景,Rust?提供了多種循環(huán)(loop)工具。一個(gè)循環(huán)會(huì)執(zhí)行循環(huán)體中的代碼直到結(jié)尾,并緊接著回到開(kāi)頭繼續(xù)執(zhí)行。而?Rust?提供了?3?種循環(huán):loop、while?和?for,下面逐一講解
    2022-09-09
  • Rust中FFI編程知識(shí)點(diǎn)整理總結(jié)(推薦)

    Rust中FFI編程知識(shí)點(diǎn)整理總結(jié)(推薦)

    這篇文章主要介紹了Rust中FFI編程知識(shí)點(diǎn)整理總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-09-09
  • RUST異步流處理方法詳細(xì)講解

    RUST異步流處理方法詳細(xì)講解

    這篇文章主要介紹了RUST異步流處理方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧
    2022-12-12
  • Rust 數(shù)據(jù)類型詳解

    Rust 數(shù)據(jù)類型詳解

    本文介紹了Rust編程語(yǔ)言中的標(biāo)量類型和復(fù)合類型,標(biāo)量類型包括整數(shù)、浮點(diǎn)數(shù)、布爾和字符,而復(fù)合類型則包括元組和數(shù)組,標(biāo)量類型用于表示單個(gè)值,具有不同的表示和范圍,本文介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2025-01-01
  • Rust中::和.的區(qū)別解析

    Rust中::和.的區(qū)別解析

    Rust中的::和.是兩種常用的操作符,分別用于訪問(wèn)命名空間中的成員和實(shí)例的字段或方法,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • Rust語(yǔ)言從入門(mén)到精通系列之Iterator迭代器深入詳解

    Rust語(yǔ)言從入門(mén)到精通系列之Iterator迭代器深入詳解

    這篇文章主要為大家介紹了Rust語(yǔ)言從入門(mén)到精通系列之Iterator迭代器深入詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Rust 所有權(quán)(Ownership)的使用小結(jié)

    Rust 所有權(quán)(Ownership)的使用小結(jié)

    Rust通過(guò)所有權(quán)系統(tǒng)管理內(nèi)存,確保安全且無(wú)運(yùn)行時(shí)性能損失,所有權(quán)系統(tǒng)的核心規(guī)則包括唯一所有者、所有權(quán)失效時(shí)值自動(dòng)釋放和值在任何時(shí)刻只能有一個(gè)所有者,本教程詳細(xì)介紹了所有權(quán)的規(guī)則、棧與堆的區(qū)別以及所有權(quán)在變量賦值、函數(shù)傳參和返回值中的應(yīng)用
    2026-01-01
  • rust的package,crate,module示例解析

    rust的package,crate,module示例解析

    rust提供了非常優(yōu)秀的包管理器cargo,我們可以使用crate,module,package來(lái)組織代碼,這篇文章主要介紹了rust的package,crate,module相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Rust泛型編程深入實(shí)例介紹應(yīng)用技巧

    Rust泛型編程深入實(shí)例介紹應(yīng)用技巧

    這篇文章主要介紹了Rust泛型編程,泛型是Rust中一種強(qiáng)大的特性,它允許我們編寫(xiě)通用的代碼,適用于不同類型,通過(guò)掌握泛型的高級(jí)應(yīng)用,我們可以編寫(xiě)更加靈活、可復(fù)用的代碼,需要的朋友可以參考下
    2026-05-05

最新評(píng)論

平邑县| 华容县| 渝中区| 高青县| 昭觉县| 海口市| 若尔盖县| 德令哈市| 华坪县| 镇沅| 赞皇县| 横山县| 南华县| 江口县| 广饶县| 黔西| 同心县| 鄄城县| 樟树市| 科尔| 区。| 阿合奇县| 文化| 怀化市| 遂平县| 治多县| 景谷| 南平市| 焉耆| 天津市| 泰安市| 崇信县| 潜江市| 保定市| 平原县| 镇雄县| 磐石市| 湘阴县| 余庆县| 白水县| 民丰县|