程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> 復雜了解拔出排序算法及Swift版的代碼示例

復雜了解拔出排序算法及Swift版的代碼示例

編輯:更多關於編程

復雜了解拔出排序算法及Swift版的代碼示例。本站提示廣大學習愛好者:(復雜了解拔出排序算法及Swift版的代碼示例)文章只能為提供參考,不一定能成為您想要的結果。以下是復雜了解拔出排序算法及Swift版的代碼示例正文


算法思想
拔出排序的方式相似平常打撲克牌的時分排序自己手中的撲克牌。開端時,我們左手中沒有牌,桌上有洗好的撲克牌,我們抓取一張撲克牌並放入左手的正確地位。為了找到一張撲克牌的正確地位,我們從右到左將它與手中的每張牌停止比擬,左手上的牌總是排序好的,而這些牌原來都是桌上牌堆中頂部的牌,當我們抓完牌時,左手中的牌自然是有順序的。
之所以叫拔出排序,不是為別的,正是由於該算法的中心就是將無序的元素拔出排好序的局部。
拔出排序的中心思想即在於劃分已排序和未排序,將每個待排序的元素逐一與已排序的元素比擬,找出恰當的拔出地位,拔出元素,循環操作至完畢
這裡是一張拔出排序的運用流程,在寫代碼前先感受一下。

我們以一維數組作為待排序的數據源,整個數組的以第一個待排序的元素為分水嶺,前半局部為已排好序的,後半局部是等候排序的; 開端排序時,從第二個元素開端循環開端,由於需求記載以後待排序的元素,我們引入一個變量記載分水嶺的下標,也就是上面源碼內的變量i; 比擬的進程比擬直接,從分水嶺往前,逐一比擬值的大小,沒找到需求拔出的地位時向後挪動元素,知道找到地位拔出元素;

完成代碼
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
}



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved