| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 2021.11.28关于冒泡排列 -> 正文阅读 |
|
[数据结构与算法]2021.11.28关于冒泡排列 |
目录 冒泡排序的定义冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。 它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。 举例:(从小到大排列)10与相邻的元素进行比较发现其顺序错误便相互交换位置,再重复此步骤,直至位置和顺序正确。(该示例为一趟冒泡排序) 假设我们完全不知道10个元素的位置是如何排列的,那我们便需要进行9趟这样的冒泡排序。 整体思路: 第一步 确定冒泡排序的趟数,即求算出元素个数再减去1,便是需要进行的趟数了。 第二步 我们得确定每进行一趟冒泡排序要判断几次大小,我们拿图举例。 从而我们便可以理解下面代码中 j <sz-1-i 的由来了(i的初始值为0) 第三步 我们进行比较过后便需要对条件成立的相邻元素进行元素调换。 最后一步 便是打印出已完成冒泡排序数组的各元素。 我们可以根据该思路写出以下冒泡排序的代码
?结果为: ? 为啥结果和我们所想象的并不一样呢? 此时我们忽略了一个重要因素: 数组在传给函数的时候是将其数组的第一个元素的地址给传过去 从而在函数中所运算的 sz 即传送过去的数组元素个数时 sz 的大小便与我们所想的便不一至了 此时的 sz 的值为1,继而导致未成功进入循环,从而我们所得出的结果便没有进行冒泡排序 我们便可直接将主函数中的sz直接传过去 修改后的冒泡排序代码:
?结果为: 由此我们的冒泡排序便可成功运行 冒泡排序代码的改进我们得注意该冒泡排序代码的效率是很低的,不管其数组有没有序,都会进行一个比较 那我们还可以在该代码的基础上进行改进 思路: 我们可以在进入相邻元素大小判断之前定义一个变量的值为1,同时在相邻元素大小判断的循环结束前重新定义这个变量的值为0,我们便可通过这个变量的值来进行判断是否可跳出该循环。 第一种情况:不满足相邻元素大小判断循环的条件,意味着满足排列顺序,不需要交换相邻元素,跳过该循环,从而该变量的值不变且为1,此时我们可添加一个判断该变量值为1的 if 语句来进行循环的跳出。 第二种情况:满足相邻元素大小判断循环的条件,意味着不满足排列顺序,需要交换相邻元素,得进入该循环,在结束元素交换后该变量的值由1变为0,因为该变量的值为0,便不满足变量值为1可跳出循环的条件,从而不能跳出该循环得继续进行相邻元素大小判断循环。 改进的冒泡排序代码如下:
以上便是关于冒泡排序的内容了,喜欢可点个赞或收藏哦! 谢谢浏览!(如有问题,请各位大神即使指出,我会及时纠正!) ? ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:51:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |