国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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
主站蜘蛛池模板: 国产精品一级毛片在线 | 成人综合站 | 国产第一区在线观看 | 操操你 | 天堂俺去俺来也www久久婷婷 | 中文av字幕 | 久久99国产精品久久99大师 | 久久国产精品免费 | 国产成人精品综合 | 久久99精品久久久久久国产越南 | 在线观看免费成人av | 三级在线观看 | 国产精品久久久亚洲 | 黄色一级电影在线观看 | 日韩国产在线 | 性做久久久 | 欧美日韩亚洲视频 | 懂色av中文字幕一区二区三区 | 日韩精品一区二区三区在线观看视频网站 | 黄色免费在线观看 | 日韩影院在线 | 精品粉嫩超白一线天av | 亚洲视频中文字幕 | 国产精选一区二区三区不卡催乳 | 夜夜骑av| 欧美高清com | 精品久久97| 亚洲专区国产精品 | 久久久亚洲 | 视频一区 中文字幕 | 日本精品网 | 久久中文字幕一区二区三区 | 中文字幕第一页在线 | 国产精品不卡一区二区三区 | 91中文字幕网 | 久久极品 | 精品电影| 日韩手机在线观看 | 久久艹天天艹 | 九色porny国模私拍av | 国产精品一区在线观看 |