2019/09/15 04-排序问题的多种解法和冒泡法

本文深入探讨了排序算法的实现,重点讲解了冒泡排序、选择排序和插入排序的工作原理及优化策略。通过具体例子展示了每种排序算法的交换和比较次数,并指出在某些情况下如何提前结束排序以提高效率。此外,还讨论了不同排序算法的时间复杂度和空间复杂度,为程序员提供了选择合适排序算法的依据。
摘要由CSDN通过智能技术生成

在这里插入图片描述
一个空列表附加三个元素在这里插入图片描述
第0个和第1个比较,两种可能,大于小于,等于是打印谁都一样在这里插入图片描述如果索引0大于索引1,就有两种情况
索引0大于索引2
或者索引0不大于索引2
这个语句块已经定义了哪个索引最大
上半部分是0和1比较剩下的部分

在这里插入图片描述
第二大分支0不大于1
在这里插入图片描述
nums是索引,打印出来即可
在这里插入图片描述

还要第二种方式
max可以可迭代对象,和多个参数
在这里插入图片描述
单个值不是可迭代对象,会报错在这里插入图片描述
可迭代对象把所有元素遍历一遍,找出最大值在这里插入图片描述
元组也可以迭代
在这里插入图片描述
第一手资料必须要查帮助文档在这里插入图片描述
拿到值用remove方法,拿到索引用pop方法,但是这两种操作都是对原有列表的一种改动。能少做就少做在这里插入图片描述
这样写,当你移除完,nums变成0 了在这里插入图片描述
剩下一个元素就等于是max的
这种算法不推荐,因为用到了remove
在这里插入图片描述
但是这样max要把所有元素都遍历一遍,效率比较低在这里插入图片描述在这里插入图片描述
第三种用sort,就地修改,sorted是返回一个新的排序好的东西在这里插入图片描述
这样相当于别人吧你的排序算法写好了,在这里插入图片描述
排序算法是必考,第一个冒泡
插入排序,选择排序是必须会写的,需要现场能写的
在这里插入图片描述
是交换排序,两两比较大小,三个数,第0个和第一个,第一个和第二个,两两比较大小,然后交换位置
索引0和索引1,,索引1大就把索引1放右边,然后和2比较,依次类推,最大数放在最右边

在这里插入图片描述在这里插入图片描述
第一趟拿1和8进行比较,,8和9进行比较,9不用动,9在8的右边,9和5进行比较,大数是9,9和5交换位置,下面就是9和6发生比较,9大,9和6互换位置,9和7比较,9大,互换位置,依次类推
这样大数一直跑到最右边,第一趟结束
在这里插入图片描述
找到第二大的数在这里插入图片描述
每一次待排数据都要减少在这里插入图片描述
左边是代排区域,无序区域,右边是有序区域
要把有序区域扩大,有序区都扩展了,列表也就完成了
在这里插入图片描述
都是两两比较在这里插入图片描述
这两种写法选一个即可在这里插入图片描述
肯定要两次循环,先搭一个基础架子在这里插入图片描述
在这里插入图片描述
第几趟跟里面的元素个数有关
在这里插入图片描述
完成22比较就从0开始比较在这里插入图片描述
还缺点东西,交换完了,再来一趟之后,外面循环是走大 趟,
里面的是待比较的数字是越来越少的,每次都应该减1个
在这里插入图片描述
第三次进来i=2在这里插入图片描述
交换排序有很多
https://en.wikipedia.org/wiki/Bubble_sort在这里插入图片描述
exchange sorts交换排序,
selection sorts选择排序
insertion sort 插入排序
在这里插入图片描述
常见的排序在这里插入图片描述

文献领域来讲,第一语言就是英文

在这里插入图片描述
为了实现原有的算法,再原有列表外,开辟了一个临时的元素空间
这个和上面是等效的
但是其实下面也是要用到临时内存的,先封装成元组,然后拆开,分别赋值,空间复杂度一点没少
在这里插入图片描述
比较了36次,交换了25次在这里插入图片描述
都需要比较,但是不进行交换,交换比较耗时在这里插入图片描述
三种情况,下面的交换次数完全不一样,一种是正常乱序,一种是排好序的,一种是全部打乱的
交换的越多越浪费时间

在这里插入图片描述
第一趟把8和9交换,然会就没必要进行比较了,走那么多趟是白走在这里插入图片描述
需要做个标记,标记是否有没有交换
每一趟进来就需要判定你有没有交换过

在这里插入图片描述在这里插入图片描述
比较次数大大减少
在这里插入图片描述
面试题问你一定要告诉提前结束,在某一趟中,没有比较,就不循环比较 了在这里插入图片描述在这里插入图片描述
时间复杂度是oO(n2) 空间复杂度是O(1)**在这里插入图片描述
两层循环都是跟N相关的所以也可以记成n2 **在这里插入图片描述
这个版本必须会写在这里插入图片描述

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值