iOS swift 选择排序 冒泡排序 快速排序
返回上级目录: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 选择排序 冒泡排序 快速排序相关推荐
- 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...
掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...
- 【C语言冒泡排序、选择排序和快速排序】
文章目录 前言 一.冒泡排序 二.选择排序 三. 快速排序 四.代码设计与实现 代码设计 代码实现 调试结果 冒泡排序改良 延伸思考 总结 前言 本文简单介绍了C语言的冒泡排序.选择排序.快速排序,结 ...
- 对以下6种常用的内部排序算法进行比较:起泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、堆排序。
题目要求: (1)对以下6种常用的内部排序算法进行比较:起泡排序.直接插入排序.简单选择排序.快速排序.希尔排序.堆排序. (2)待排序表的表长不小于100:其中的数据要用伪随机数产生程序产生:至少要 ...
- C语言排序算法 选择排序 插入排序 快速排序 qsort实现快排 堆排序
常见排序算法 选择排序 选择排序(Selection sort)是一种简单直观的排序算法. 它的工作原理如下. 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素 ...
- 数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并
数据结构与算法 第八天常见排序+冒泡排序+快速排序+文件IO+大数据排序+文件合并 第一章 冒泡排序 [1]Bubble_Sort.c 第二章 快速排序 [1]quick_sort.c 第三章 大数据 ...
- JS-排序详解:冒泡排序、选择排序和快速排序
JS-排序详解-冒泡排序 说明 时间复杂度指的是一个算法执行所耗费的时间 空间复杂度指运行完一个程序所需内存的大小 稳定指,如果a=b,a在b的前面,排序后a仍然在b的前面 不稳定指,如果a=b,a在 ...
- 选择排序-冒泡排序-归并排序-快速排序-插入排序
选择排序 基本思想: 设所排序序列个数为N,i取1,2,3-n-1,从N-i+1个记录(Ri,Ri+1-.Rn)中找出排序码最小的记录,与第i个记录交换,执行N-1次后完成序列的排序. //选择排序 ...
- python3写冒泡排序_使用python3实现冒泡排序、选择排序和快速排序
冒泡排序的时间复杂度是O(n^2),选择排序的时间复杂度也是O(n^2),这是因为这两种排序算法的元素比较次数是相同的.但因为冒泡排序是每比较一次,就会交换一次,而选择排序是每一轮循环结束后才进行一次 ...
- JAVA最常用的排序_冒泡排序、选择排序、快速排序
排序算法是Java面试题中最常考的,笔试题.机试题都会有,所有掌握最常用的排序是必须. 在效率中快速排序是这几种效率最高的. 代码验证过,可以直接复制测试运行. 代码如下: package com.l ...
最新文章
- web前端java script学习2017.7.11
- 【Visual Studio】如何在VS 2012中打印变量值到输出窗口
- 运维基础(6)CI / CD
- Android自定义控件(特效一) 点击屏幕,根据所点击的位置绘制圆环
- 日期型转json格式(springboot)
- flutter刷新页面_用Flutter实现58App的首页
- 「软件项目管理」成本估算模型——Walston-Felix模型和COCOMO Ⅱ模型
- TQ210——交叉编译器的安装
- dj鲜生-19-登陆功能-利用内置认证体系
- [置顶] 手机通过socket控制电脑关机,重启,注销等功能
- 字节跳动学前端还是java_【全国】—Java/前端工程师—字节跳动
- 如何设置iPhone的手机铃声?【来自星星的你】
- 【045】HTML初学
- 百度网盘文件真实地址解析
- 大数据的四个核心问题
- SQL 校验身份证格式
- MATLAB 插值+计算离散点曲率
- 获取海康摄像机/录像机rtsp视频流地址格式
- asyncio+aiohttp异步免费代理池(已失效)
- 前端XSS 过滤--亲测有效