返回上级目录:iOS 算法题

三大经典排序 | 冒泡排序,选择排序,快速排序 - 知乎

文章目录

  • 1.选择排序
  • 2.冒泡排序
  • 3.快速排序

1.选择排序

//选择排序
func rankSelect(_ array:Array<Int>) -> Array<Int>{var arrM = arrayvar temp:Intfor i in 0..<arrM.count {for j in (i+1)..<arrM.count {if arrM[i] > arrM[j] {temp = arrM[i]arrM[i] = arrM[j]arrM[j] = temp}}}return arrM
}let arr:Array = [3,2,4,1]
let rankedArr = rankSelect(arr)
print(rankedArr)

打印结果:
[1, 2, 3, 4]

2.冒泡排序

//MARK:7.冒泡排序
func rankBubble(_ array:Array<Int>) -> Array<Int>{var arrM = arrayvar temp:Intfor i in 0..<arrM.count {for j in 0..<(arrM.count-1-i)  {if arrM[j] > arrM[j+1] {temp = arrM[j]arrM[j] = arrM[j+1]arrM[j+1] = temp}}}return arrM
}let arr = [3,5,2,1,4]
let rankedArr = rankBubble(arr)
print(rankedArr)

打印结果:
[1,2,3,4,5]

3.快速排序

//MARK:8.快速排序
func rankFast(_ array:inout Array<Int>){var left = 0var right = array.count - 1if left == right || array.count < 2{return}var pivotValue = array[0]var temp:Int//是否是和右边的比var isCopareRight = truewhile left != right {if isCopareRight {//和右边的数比if pivotValue > array[right] {array[left] = array[right]left += 1isCopareRight = false}else{right -= 1}}else{//和左边的数比 [3,4,1,0,5]if pivotValue < array[left] {array[right] = array[left]right -= 1isCopareRight = true}else{left += 1}}}array[left] = pivotValuevar childArr1 = Array(array[0..<left])var childArr2 = Array(array[(left+1)..<array.count])rankFast(&childArr1)rankFast(&childArr2)array = childArr1 + [array[left]] + childArr2
}var arr = [6,7,1,5,4,2,3,4,56,0,23]
rankFast(&arr)
print(arr)

打印结果:
[0, 1, 2, 3, 4, 4, 5, 6, 7, 23, 56]
Program ended with exit code: 0

c语言 快速排序 - 我的
4分钟动画-秒懂快速排序
快速排序—最常用的排序算法
数据结构与算法:排序算法之快速排序「详细步骤图解」

iOS swift 选择排序 冒泡排序 快速排序相关推荐

  1. 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...

    掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...

  2. 【C语言冒泡排序、选择排序和快速排序】

    文章目录 前言 一.冒泡排序 二.选择排序 三. 快速排序 四.代码设计与实现 代码设计 代码实现 调试结果 冒泡排序改良 延伸思考 总结 前言 本文简单介绍了C语言的冒泡排序.选择排序.快速排序,结 ...

  3. 对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。

    题目要求: (1)对以下6种常用的内部排序算法进行比较:起泡排序.直接插入排序.简单选择排序.快速排序.希尔排序.堆排序. (2)待排序表的表长不小于100:其中的数据要用伪随机数产生程序产生:至少要 ...

  4. C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序

    常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...

  5. 数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并

    数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并 第一章 冒泡排序 [1]Bubble_Sort.c 第二章 快速排序 [1]quick_sort.c 第三章 大数据 ...

  6. JS-排序详解:冒泡排序、选择排序和快速排序

    JS-排序详解-冒泡排序 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在 ...

  7. 选择排序-冒泡排序-归并排序-快速排序-插入排序

    选择排序 基本思想: 设所排序序列个数为N,i取1,2,3-n-1,从N-i+1个记录(Ri,Ri+1-.Rn)中找出排序码最小的记录,与第i个记录交换,执行N-1次后完成序列的排序. //选择排序 ...

  8. python3写冒泡排序_使用python3实现冒泡排序、选择排序和快速排序

    冒泡排序的时间复杂度是O(n^2),选择排序的时间复杂度也是O(n^2),这是因为这两种排序算法的元素比较次数是相同的.但因为冒泡排序是每比较一次,就会交换一次,而选择排序是每一轮循环结束后才进行一次 ...

  9. JAVA最常用的排序_冒泡排序、选择排序、快速排序

    排序算法是Java面试题中最常考的,笔试题.机试题都会有,所有掌握最常用的排序是必须. 在效率中快速排序是这几种效率最高的. 代码验证过,可以直接复制测试运行. 代码如下: package com.l ...

最新文章

  1. web前端java script学习2017.7.11
  2. 【Visual Studio】如何在VS 2012中打印变量值到输出窗口
  3. 运维基础(6)CI / CD
  4. Android自定义控件(特效一) 点击屏幕,根据所点击的位置绘制圆环
  5. 日期型转json格式(springboot)
  6. flutter刷新页面_用Flutter实现58App的首页
  7. 「软件项目管理」成本估算模型——Walston-Felix模型和COCOMO Ⅱ模型
  8. TQ210——交叉编译器的安装
  9. dj鲜生-19-登陆功能-利用内置认证体系
  10. [置顶] 手机通过socket控制电脑关机,重启,注销等功能
  11. 字节跳动学前端还是java_【全国】—Java/前端工程师—字节跳动
  12. 如何设置iPhone的手机铃声?【来自星星的你】
  13. 【045】HTML初学
  14. 百度网盘文件真实地址解析
  15. 大数据的四个核心问题
  16. SQL 校验身份证格式
  17. MATLAB 插值+计算离散点曲率
  18. 获取海康摄像机/录像机rtsp视频流地址格式
  19. asyncio+aiohttp异步免费代理池(已失效)
  20. 前端XSS 过滤--亲测有效

热门文章

  1. 不得不折服的人生感悟
  2. python爬虫基础知识点整理
  3. vs code 非常好看的vue代码颜色配置教程
  4. 【服务器】vscode配置远程连接
  5. (手机拍照)2、光和影
  6. 网件R7000刷KOOLSHARE梅林后恢复阿苏斯完全体
  7. 结合个人经历总结的前端入门方法
  8. 如何揪出修改浏览器主页的流氓软件2
  9. 编程人生:毕业到迈入工作的第五年,发生了这些变化
  10. windows10强制删除文件_苹果ID永久获取地址; 头条清爽版; 强制删除顽固文件; 某管家加速工具单文件版;以上为本期内容...