Swift编程基础之排序(三)-----实战篇
来源:互联网 发布:湘潭湖南软件职业学院 编辑:程序博客网 时间:2024/05/26 09:57
通过上两篇的讲解,我们将排序的基础就基本说完了,那么我们加上循环向下推广就会推出排序算法。Come on!
1、选择排序
// 选择排序是指每执行一次,会将数组元素最小(升序)或最大的元素(降序)放到正确位置/* 选择排序(两两相比,第一次会固定一个元素,然后比较根据需求进行从小到大或从大到小的交换) var arr = [9,6,4,3,1] //升序 第一次 : arr[0], arr[1] 6,9,4,3,1 arr[0], arr[2] 4,9,6,3,1 arr[0], arr[3] 3,9,4,4,1 arr[0], arr[4] 1,9,6,4,3 第二次 : arr[1],arr[2] 1,6,9,4,3 arr[1],arr[3] 1,4,9,6,3 arr[1],arr[4] 1,3,9,6,4 第三次 : arr[2],arr[3] 1,3,6,9,4 arr[2],arr[4] 1,3,4,9,6 第四次 : arr[3],arr[4] 1,3,4,6,9*/var arr = [9,6,4,3,1]for i in 0..<arr.count-1{ for j in i+1..<arr.count{ if arr[i] > arr[j]{ let tmp = arr [i] arr[i] = arr[j] arr[j] = tmp } }}
大家理解之后,我们将我们得到的代码段封装成一个函数,那么大家就可以随时随地调用了。
//选择排序func selectionSort(inout arr:Array)->Void{ for i in 0..<arr.count-1{ for j in i+1..<arr.count{ if arr[i] > arr[j]{ let tmp = arr [i] arr[i] = arr[j] arr[j] = tmp } } }}
3、冒泡排序
// 冒泡排序值在排序时,将数组中相邻两个元素的值进行比较,将较小或较大的排序到正确的位置/* var arr = [9,6,4,3,1] // 升序 第一次: arr[0],arr[1] 6,9,4,3,1 arr[1],arr[2] 6,4,9,3,1 arr[2],arr[3] 6,4,3,9,1 arr[3],arr[4] 6,4,3,1,9 第二次: arr[0],arr[1] 4,6,3,1,9 arr[1],arr[2] 4,3,6,1,9 arr[2],arr[3] 4,3,1,6,9 第三次: arr[0],arr[1] 3,4,1,6,9 arr[1],arr[2] 3,1,4,6,9 第四次: arr[0],arr[1] 1,3,4,6,9*/var arr1 = [9,6,4,3,1]for i in 0..<arr1.count-1{ //冒泡执行的次数 for j in i+1..<arr1.count-1-i{ if arr1[j] > arr1[j+1]{ let tmp = arr1[j] arr1[j] = arr1[j+1] arr1[j+1] = tmp } }}
同理,我也将冒泡排序封装成一个函数,方便大家调用。
// 冒泡排序函数func selectionSort(inout arr:Array)->Void{ for i in 0..<arr1.count-1{ //冒泡执行的次数 for j in i+1..<arr1.count-1-i{ if arr1[j] > arr1[j+1]{ let tmp = arr1[j] arr1[j] = arr1[j+1] arr1[j+1] = tmp } } }}
以上就是两种常用的排序算法,授人以鱼不如授人以渔嘛,所以我希望将这种分析方法分享给大家,那么其他的几种排序也就不在话下了,需要用到的时候就可以自己总结封装成函数啦。谢谢大家!
0 0
- Swift编程基础之排序(三)-----实战篇
- Swift编程基础之排序(一)
- Swift编程基础之排序(二)
- OC转Swift之基础篇(三)--类
- Swift编程基础(三):数组与字典
- iOS编程基础-Swift(三)-变量与简单类型
- 《java并发编程实战》基础构建模块(三)
- Swift专栏:Swift基础入门(三)
- 【基础算法】排序-复杂排序之三(堆排序)
- 【基础算法】排序-简单排序之三(插入排序)
- SWIFT基础语法(三)
- Swift基础(三)字符串
- hadoop实战基础篇(三)
- Swift语言编程入门实战系列教程(三)---一颗爱你的心
- java多线程编程 - 实战篇(三)
- C#编程之C#基础(三)
- Java入门之编程基础(三)
- Swift编程基础之笔记总结---String
- LeetCode-101:Symmetric Tree
- wxpython 简单文本编辑
- 走遍中国 —— 华南
- workerman 实现消息推送
- flashback database log导致hung机
- Swift编程基础之排序(三)-----实战篇
- struts2标签Iterator迭代时获取下标、判断list是否为空
- Java逻辑运算符
- 1076. Forwards on Weibo (30)
- linux的x window system
- mysql创建远程用户
- Java网络编程 服务器Socket
- redis学习网站
- 模板匹配的字符识别(OCR)笔记