麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Swift > 正文

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

2020-03-09 17:48:07
字體:
來源:轉載
供稿:網友

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

排序算法,Swift,插入排序

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

排序算法,Swift,插入排序

 

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

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.由大到小排序:

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}


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产亚洲精品久久777777 | 亚洲午夜激情网 | 泰剧19禁啪啪无遮挡 | 免费一级片网站 | 成人辣文| 福利在线免费 | 国产成人网 | 伊人网站 | 精品国产91久久久久久浪潮蜜月 | 久草在线资源福利站 | 伊人久操视频 | 国产成人精品网站 | 午夜视频观看 | 国产精品v片在线观看不卡 成人一区二区三区在线 | 黄色片网站免费在线观看 | 中文字幕激情视频 | 在线播放av网址 | 九一成人 | 国产瑟瑟视频 | 久久99国产综合精品 | 国产www免费 | 国产午夜精品久久久久久免费视 | 国产一区二区三区在线视频 | 国产一区二区精彩视频 | 久久精品视频在线看99 | 国产中出在线观看 | 毛片大全在线观看 | 中文字幕一二三区芒果 | 欧美日韩1区2区3区 黄片毛片一级 | 看免费黄色大片 | 日本免费一区二区三区四区 | 精品国产96亚洲一区二区三区 | 91重口视频 | 91精品国产乱码久 | 色七七亚洲| 日本精品视频一区二区三区四区 | 精品无码久久久久久国产 | 国产美女爽到喷白浆的 | 亚洲成人福利电影 | 男人天堂新地址 | 久久久久久久一区二区 |