iOS算法--冒泡排序

iOS编程——Swift实现冒泡排序算法 以及优化 冒泡排序大家都很了解了,我的理解:其实就是倒序两两比较,把小的数依次往前放。执行完以后,再遍历剩下的n-1个数。其最坏情况的时间维度为O(n²) 代码如下: func swap(inout array: [T], index1: Int, index2: Int){ var temp = array[index1] array[index1] = arr 阅读详情

冒泡排序

简介

这是最常规的排序,也是基础到的第一个排序.

特点

两层循环
外层循环是个数的循环
内层循环是选出最大/小的数据
每次外层循环后,找到所需要数据,下次循环的范围就会缩小1
内层循环是移动flag,对比当前数据和下一条数据,满足交换,不满足不做改动,对比后,移动flag.
这种方式类似水下的泡泡,越往上越大,因此,被亲切称为 吗,冒泡排序

时间复杂度

最好:O(n)
最差:O(n2)
平均:O(n2)

代码

+ (void)maoPao:(NSMutableArray<NSNumber *> *)array {
    for (int i = 0; i < array.count - 1; i++) {
        for (int j = 0; j < (array.count - 1 - i); j++) {
            if (array[j].integerValue > array[j + 1].integerValue) {
                [array exchangeObjectAtIndex:j withObjectAtIndex:j + 1];
            }
        }
        NSLog(@"%@", [array componentsJoinedByString:@","]);
    }
}

优化

缩短冒泡排序,其实可以设置一个flag,用来表明是否发生了数据交换.
在排序过程中, 如果没有发生排序变化, 表明此数组为有序数组,接下来的排序就无需操作
不过这种方法,只是逻辑上的优化,实际情况对算法没有太大的意义.

IOS开发指南之Swift冒泡排序算法实现 1.冒泡排序算法实现。 阅读详情

相关推荐

算法 -- iOS开发用Objective_C / Swift3.0实现:快速排序 / 冒泡排序 / 选择排序

iOS开发用OC和Swift3.0实现快速排序 / 冒泡排序 / 选择排序

1391

iOS 开发中常用的排序(冒泡、选择、快速、插入、希尔、归并、基数)算法

  1、冒泡排序:   冒泡算法是一种基础的排序算法,这种算法会重复的比较数组中相邻的两个元素。如果一个元素比另一个元素大(小),那么就交换这两个元素的位置。重复这一比较直至最后一个元素。这一比较会重复n-1趟,每一趟比较n-j次,j是已经排序好的元素个数。每一趟比较都能找出未排序元素中最大或者最小的那个数字。这就如同水泡从水底逐个飘到水面一样。冒泡排序是一种时间复杂度较高,效率较低的...

316

iOS版快速排序(也含冒泡)

iOS版快速排序(也含冒泡)。希望能帮到大家。

iOS常用算法之冒泡排序

冒泡算法是一种基础的排序算法,这种算法会重复的比较数组中相邻的两个元素,如果一个元素比另一个元素大/小,那么就交换这两个元素的位置。重复一直比较到最后一个元素. 1.基本的冒泡排序算法: -(void)bubbleSorting{ int account = 0; NSMutableArray *array = [NSMutableArray arrayWithObjects:@3,@2,@9,@1,@6,@7,@4,@5,@8,nil]; NSLog(@"排序之前的数组===

shuzhi57的博客 1612

iOS冒泡排序

冒泡排序 ios版的,可以快速实现排序。可扩展哦亲

IOS版各种排序算法

IOS版各种排序算法,包括冒泡,快速,汉诺塔,有排序模型图

iOS排序----冒泡排序

今天来说说冒泡排序. 百度百科: 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列...

smile_sunshine 826

【可信数据空间-部署方案】

此部署架构体现了以下几个核心原则:去中心化: 数据存储和处理完全分布在各个参与者端,运营方只提供核心的协调和信任基础设施。安全边界清晰: 通过VPC、DMZ、防火墙、K8s命名空间等技术,在每个层级都建立了严格的安全边界。高可用与弹性: 所有关键服务均以集群方式部署,避免单点故障,并能根据负载动态伸缩。云原生: 全面采用容器化和Kubernetes编排,简化部署、管理和运维复杂度。合规性: 架构设计天然满足数据驻留要求(数据留在企业本地),并为所有操作提供不可篡改的审计追踪能力。

u014716614的博客 771

数据结构与算法-排序(六)堆排序(Heap Sort)

摘要 堆排序需要用到一种数据结构,大顶堆。大顶堆是一种二叉树结构,本质是父节点的数大于它的左右子节点的数,左右子节点的大小顺序不限制,也就是根节点是最大的值。 这里就是不断的将大顶堆的根节点的元素和尾部元素交换,交换到大顶堆没有可以被交换的元素为止。后面再说大顶堆的逻辑。 逻辑 首先将序列通过大顶堆排序。然后不断的从堆中取出顶部元素放在尾部,直到大顶堆元素为空。 流程 对序列进行原地建堆操作 重复下面操作,直到堆元素数量为 1 交换堆顶元素与尾元素 堆的元素数量减 1 对 0 位置进行 1 次 自下.

我为双鱼狂 336

从ORCAP-1589警告看Cadence ORCAD的DRC设置:如何避免‘网络别名’引发的潜在短路风险

本文深入解析Cadence ORCAD中ORCAP-1589警告的深层含义,探讨网络别名可能引发的短路风险及DRC设置优化方案。通过分析网络别名的设计意图、DRC规则配置及最佳实践,帮助工程师有效规避设计风险,提升电路设计的可靠性和规范性。

weixin_34194829的博客 297

PyCharm+QT Designer整合

CMD下使用pip安装PyQt4或者PYQT5 这里要注意,你下载的PYQT5不包含QT designer 还要:pip3 install PyQt5-tools,好像Pyqt5中将designer分离了或者查看源码:https://github.com/altendky/pyqt5-tools,编译安装 将QT Designer整合到PyCharm的External Tools中,以后就可...

mxh的博客 6414

iOS(Object C) 冒泡排序

iOS(Object C) 冒泡排序;1.将index=0和index=1的值进行比较, 2.如果index=0 > index=1,则互换他俩的位置 3.如果index0 < index=1, 则数组保持不变 4.以此类推,第二次比较的两个值为 index1 和 index2

wyz670083956的博客 665

非球面检测

摘要:非球面镜检测主要采用干涉法,包括零位补偿和非零位补偿两种方式。零位补偿通过透镜组完全校正像差,精度达1%波长,但设计复杂成本高;非零位补偿利用部分像差补偿降低波前斜率,适用于规则非球面。折射-衍射混合补偿镜能同时校正多种像差。实际检测中可采用物理补偿镜或动态CGH加载方案,光路设计需运用坐标断点和多重结构技术实现复杂光路建模。不同方法各具优势,需根据检测需求选择合适方案。

Zhaxibamao的博客 2106

iOS算法篇(三)冒泡排序算法

冒泡排序:原理:冒泡顾名思义,就像气泡从水底冒出一样,它的排序方式是:研究了一下,它给人的感觉是像近视眼一样,它只能看见自己和紧挨着自己的下一个数字,所以它的排序方式也就是将比较元素和紧挨着自己的元素比较看是否交换位置,然后持续这个过程,比较的一直都是紧挨着的两个元素。下面看代码吧,再代码里面再详细解释。 冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走

小华子的奋斗的博客 1432

基于Scrapy+Playwright的学术会议信息智能爬取系统实战

本文详细介绍如何使用Python构建一个高效的学术会议信息爬取系统,结合Scrapy框架和Playwright无头浏览器技术,实现对全球学术会议数据的自动化采集、清洗和存储。文章包含完整的技术方案设计、代码实现细节以及性能优化策略,可帮助读者快速掌握现代网络爬虫开发的核心技术。关键词:Python爬虫、Scrapy、Playwright、学术会议、数据采集、反爬对抗python复制下载。

2201_76125261的博客 710

YoloV10改进策略:卷积篇|基于PConv的二次创新|附结构图|性能和精度得到大幅度提高(独家原创)

在PConv的基础上做了二次创新,创新后的模型不仅在精度和速度上有了质的提升,还可以支持Stride为2的降采样。改进方法简单高效,需要发论文的同学不要错过!

m0_47867638的博客 1094

ios算法之冒泡排序算法

百度百科解释 通过不断的走访需要排序的元素,依次比较两个相邻的元素。如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。这样重复的进行直到没有相邻元素需要交换,就算元素排序完成。名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名冒泡排序。 oc版本如下 oc Demo地址 #pragma mark - 冒泡排序 - (void)bubbleSortMethod{ int iCount =.

1848倒计时 583

【软考高级架构】论文范文17——论软件系统架构评估及其应用(ATAM)

软件系统架构评估是保障系统质量属性满足业务目标的关键环节,架构权衡分析方法(Architecture Trade-off Analysis Method,ATAM)作为一种主流的架构评估方法,通过场景识别、敏感点与权衡点分析、风险与非风险决策识别等系统化活动,能够在架构设计早期发现潜在问题,降低后期修改成本。本文以笔者主导的某省级智慧医疗平台架构评估项目为案例,围绕ATAM方法的应用展开论述。笔者担任系统架构师,负责组织评估团队、引导场景捕获、分析架构决策、识别风险与权衡点。

qq837993702的博客 490

iOS算法总结-冒泡排序

冒泡排序(Bubble Sort): 一种交换排序,它的基本思想是:两两比较相邻的关键字,如果反序则交换,直到没有反序的记录为止。 平实写冒泡排序,我都是这么写的: - (void)logArray { NSMutableArray * arr = @[@16,@1,@2,@9,@7,@12,@5,@3,@8,@13,@10].mutableCopy; for (int i = 0

MinggeQingchun的博客 555

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

iOS算法冒泡排序

操作步骤 1、比较相邻的元素。如果第一个比第二个大(小),就交换他们两个。 2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大(小)的数。 3、针对所有的元素重复以上的步骤,除了最后已经选出的元素(有序)。 4、持续每次对越来越少的元素(无序元素)重复上面的步骤,直到没有任何一对数字需要比较,则序列最终有序。 ...

weixin_37700660的博客 1672

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

iOS算法(四)之冒泡排序

冒泡排序法的基本思想:(以升序为例)含有n个元素的数组原则上要进行n-1次排序。对于每一躺的排序,从第一个数开始,依次比较前一个数与后一个数的大小。如果前一个数比后一个数大,则进行交换。这样一轮过后,最大的数将会出现称为最末位的数组元素。第二轮则去掉最后一个数,对前n-1个数再按照上面的步骤找出最大数,该数将称为倒数第二的数组元素......n-1轮过后,就完成了排序。

Ideainnet 1565

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ios之经典算法冒泡排序以及优化

一. 算法描述     冒泡排序:依次比较相邻的数据,将小数据放在前,大数据放在后;即第一趟先比较第1个和第2个数,大数在后,小数在前,再比较第2个数与第3个数,大数在后,小数在前,以此类推则将最大的数"滚动"到最后一个位置;第二趟则将次大的数滚动到倒数第二个位置......第n-1(n为无序数据的个数)趟即能完成排序。 以下面5个无序的数据为例: 40 8 15 18 12 (

MR_ROG的专栏 1748
上一篇: iOS算法--快速排序
下一篇: iOS开发--检测项目使用UIWebView
单细胞的逻辑
博客等级 码龄10年 19粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值