一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Swift - 簡單理解插入排序算法及Swift版的代碼示例

簡單理解插入排序算法及Swift版的代碼示例

2020-12-28 11:26yoyo Swift

插入排序算法可以在已排序的序列中將要插入的元素和原有元素保持有序,這里我們來簡單理解插入排序算法及Swift版的代碼示例,需要的朋友可以參考下

算法思想
插入排序的方式類似平時打撲克牌的時候排序自己手中的撲克牌。開始時,我們左手中沒有牌,桌上有洗好的撲克牌,我們抓取一張撲克牌并放入左手的正確位置。為了找到一張撲克牌的正確位置,我們從右到左將它與手中的每張牌進行比較,左手上的牌總是排序好的,而這些牌原來都是桌上牌堆中頂部的牌,當我們抓完牌時,左手中的牌自然是有順序的。
之所以叫插入排序,不是為別的,正是因為該算法的核心就是將無序的元素插入排好序的部分。
插入排序的核心思想即在于劃分已排序和未排序,將每個待排序的元素逐個與已排序的元素比較,找出恰當的插入位置,插入元素,循環操作至結束
這里是一張插入排序的使用流程,在寫代碼前先感受一下。

簡單理解插入排序算法及Swift版的代碼示例

我們以一維數組作為待排序的數據源,整個數組的以第一個待排序的元素為分水嶺,前半部分為已排好序的,后半部分是等待排序的; 開始排序時,從第二個元素開始循環開始,由于需要記錄當前待排序的元素,我們引入一個變量記錄分水嶺的下標,也就是下面源碼內的變量i; 比較的過程比較直接,從分水嶺往前,逐一比較值的大小,沒找到需要插入的位置時向后移動元素,知道找到位置插入元素;

簡單理解插入排序算法及Swift版的代碼示例

 

實現代碼
1.由小到大排序:

?
1
2
3
4
5
6
7
8
9
10
11
12
func insertionSortBigger(var array: Array<Int>) -> Array<Int>{
  for(var j = 1 ; j<array.count ; j++){//從第二個開始向前對比插入
    let key = array[j] //記錄要比較的值
    var i = j-1
    while(i>=0 && array[i]>key){//如果key較小,那么現有的位置向后移,為key空出位置
      array[i+1] = array[i] //移位
      i--
    }
    array[i+1] = key
  }
  return array
}

2.由大到小排序:

?
1
2
3
4
5
6
7
8
9
10
11
12
func insertionSortSmaller(var array: Array<Int>) -> Array<Int>{
  for(var j = 1 ; j<array.count ; j++){//從第二個開始向前對比插入
    let key = array[j] //記錄要比較的值
    var i = j-1
    while(i>=0 && array[i]<key){//如果key較大,那么現有的位置向后移,為key空出位置
      array[i+1] = array[i] //移位
      i--
    }
    array[i+1] = key
  }
  return array
}

延伸 · 閱讀

精彩推薦
  • SwiftSwift能代替Objective-C嗎?

    Swift能代替Objective-C嗎?

    這是我在網上上看到的答案,復制粘貼過來和大家分享一下,因為我和很多人一樣很關心Swift的出現對Mac開發的影響和對Objective-C的影響。...

    Swift教程網4412020-12-16
  • SwiftSwift實現多個TableView側滑與切換效果

    Swift實現多個TableView側滑與切換效果

    這篇文章主要為大家詳細介紹了Swift實現多個TableView側滑與切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    乞力馬扎羅的雪雪5822021-01-08
  • Swiftmac git xcrun error active developer path 錯誤

    mac git xcrun error active developer path 錯誤

    本文主要是講訴了如何解決在mac下使用git;xcode4.6的環境時,出現了錯誤(mac git xcrun error active developer path)的解決辦法,希望對大家有所幫助...

    Swift教程網2232020-12-16
  • Swiftswift where與匹配模式的實例詳解

    swift where與匹配模式的實例詳解

    這篇文章主要介紹了swift where與匹配模式的實例詳解的相關資料,這里附有簡單的示例代碼,講的比較清楚,需要的朋友可以參考下...

    追到夢的魔術師14382021-01-06
  • SwiftSwift教程之基礎數據類型詳解

    Swift教程之基礎數據類型詳解

    這篇文章主要介紹了Swift教程之基礎數據類型詳解,本文詳細講解了Swift中的基本數據類型和基本語法,例如常量和變量、注釋、分號、整數、數值類型轉換等...

    Swift教程網5162020-12-18
  • SwiftSwift中轉義閉包示例詳解

    Swift中轉義閉包示例詳解

    在Swift 中的閉包類似于結構塊,并可以在任何地方調用,下面這篇文章主要給大家介紹了關于Swift中轉義閉包的相關資料,需要的朋友可以參考下...

    小小小_小朋友11412021-12-26
  • SwiftSwift使用CollectionView實現廣告欄滑動效果

    Swift使用CollectionView實現廣告欄滑動效果

    這篇文章主要為大家詳細介紹了Swift使用CollectionView實現廣告欄滑動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Stevin的技術博客12372021-01-13
  • SwiftSwift的74個常用內置函數介紹

    Swift的74個常用內置函數介紹

    這篇文章主要介紹了Swift的74個常用內置函數介紹,這篇文章列舉出了所有的Swift庫函數,內置函數是指無需引入任何模塊即可以直接使用的函數,需要的朋友可...

    Swift教程網5802020-12-19
主站蜘蛛池模板: 欧美视频一区二区三区四区 | 精品一产品大全 | 日本国产一区二区三区 | 俄罗斯年轻男同gay69 | 午夜爱| 草大逼 | 99在线观看免费视频 | 亚洲 欧美 另类 中文 在线 | 日日摸夜夜爽色婷婷91 | 无码日韩精品一区二区免费 | 欧美一级片在线免费观看 | 夫承子液by免费阅读 | 久草热8精品视频在线观看 久草草在线视视频 | 亚洲国产高清一区二区三区 | 和老外3p爽粗大免费视频 | 久久久精品国产免费A片胖妇女 | 国色天香社区在线 | 欧美日韩国产一区二区三区在线观看 | 小sao货水好多真紧h的视频 | 日本视频在线免费看 | 99爱免费视频 | 婷婷福利| 五月婷婷俺也去开心 | 国内精品视频一区二区三区八戒 | 青草视频免费观看在线观看 | 韩国帅男同gay网站 韩国三级在线播放 | 韩国伊人| a男人的天堂久久a毛片 | 精品国产福利一区二区在线 | 亚洲国产果果在线播放在线 | 加勒比一本大道在线 | 免费港剧在线观看港剧 | 1024人成网站色 | 91av俱乐部 | 好男人天堂网 | 男人使劲躁女人小视频 | 无码AV毛片色欲欧洲美洲 | 丁香网五月天 | 精品一区二区三区色花堂 | 日韩aⅴ在线观看 | 国产一级片在线 |