服务器之家:专注于服务器技术及软件下载分享
分类导航

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