千万别点进来,点进来你会后悔的!!!

文章详细解释了冒泡排序和插入排序这两种简单的排序算法的工作原理,通过具体的例子展示了每一步的操作,并提供了排序过程的详细分析。冒泡排序通过相邻元素比较交换达到排序目的,而插入排序则是通过构建有序序列并逐步插入未排序元素来完成排序。文章末尾提到了代码实现,但未给出具体代码。
摘要由CSDN通过智能技术生成

1. 冒泡排序是一种非常容易理解的排序算法。冒泡排序的原理是:从左到右,相邻元素进行比较,每次比较一轮,就会找到序列中的最值,这个数就会从序列的最右边冒出来。

  举个栗子

  对下面这个序列进行从小到大的排序【10,7,5,27,98,31】

  第一轮

1)10和7相比较,10>7,则它们互换位置:【7,10,5,27,98,31】

2)10和5相比较,10>5,则它们互换位置:【7,5,10,27,98,31】

3)10和27相比较,10<27,则它们不换位置:【7,5,10,27,98,31】

4)27和98相比较,27<98,则它们不换位置:【7,5,10,27,98,31】

5)98和31相比较,98>31,则它们互换位置:【7,5,10,27,31,98】

到此第一轮结束,本次的结果是找到了序列中最大的值,并浮到了中最右边

比较时,每轮的第n次比较是新序列中第n个元素和第n+1个元素比较

第二轮:开始时【7,5,10,27,31,98】

1)7和5相比较,7>5,则它们互换位置:【5,7,10,27,31,98】

2)7和10相比较,7<10,则它们不换位置:【5,7,10,27,31,98】

3)10和27相比较,10<27,则它们不换位置:【5,7,10,27,31,98】

4)27和31相比较,27<31,则它们不换位置:【5,7,10,27,31,98】

第三轮:开始时【5,7,10,27,31,98】

1)5和7相比较,5<7,则它们不换位置:【5,7,10,27,31,98】

2)7和10相比较,7<10,则它们不换位置:【5,7,10,27,31,98】

3)10和27相比较,10<27,则它们不换位置:【5,7,10,27,31,98】

第四轮:开始时【5,7,10,27,31,98】

1)5和7相比较,5<7,则它们不换位置:【5,7,10,27,31,98】

2)7和10相比较,7<10,则它们不换位置:【5,7,10,27,31,98】

第五轮:开始时【5,7,10,27,31,98】

1)5和7相比较,5<7,则它们不换位置:【5,7,10,27,31,98】

至此,整个序列排序结束,从上面过程可以看出,冒泡排序比较的轮数是数组长度-1,每轮比较的对数等于数组的长度 - 当前轮数。

清楚冒泡排序实现的原理后,接下来我们上实现代码!

 运行结果:

2.插入排序是冒泡排序的优化,是一种直观的简单排序算法。它的实现原理是通过构建有序数组元素的存储,对未排序的数组元素,在已经排序的数组中从最后一个元素向第一个元素遍历,找到相应位置并插入。其中,未排序数组的第1个元素会被看作是一个有序的数组,从第二个到最后一个元素会被看作是一个无序数组。

举个栗子

对下面这个序列进行从小到大的排序 [3,1,2,5,4]

  首先,将未排序的第一个元素【3】保持不动,看作一个有序的数组,

再看第二个元素【1】,和前面的元素【3】相比,1<3,所以我们将1,3相互交换位置,得到【1,3,2,5,4】

再看第三个元素【2】,2<3,所以彼此交换位置,又发现2>1,所以2应该插入1和3之间,得到【1,2,3,5,4】;

再看第四个元素【5】,5>3 , 所以它们之间不需要交换,得到【1,2,3,5,4】;最后是元素【4】,4<5,所以4和5要交换位置,又4>3,所以4最终要在3和5之间,得到【1,2,3,4,5】

至此,插入排序结束。

知道原理之后,我们再来看实现代码:

运行结果:

 (ps :本菜鸟玻璃心,接受不了负面评论,写的不好别骂我,骂就是你对)

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值