c语言设计程序实现顺序冒泡_一张图让你秒懂冒泡排序

8b73b1652df730446f6d956621d07321.gif

有头发且有趣的码农万里挑一~ 

18

有料叔 | 一位有故事的程序猿

2bd69646ac8c07b81b0f60ee238f651a.png

python语言是近几年比较火的语言,市面上关于数据算法的写法c语言,java的比较多,python的不是很多,今天我就给大家分享一下用python书写冒泡排序,快速排序,还有二分查找,当然在上代码之前,我们去走进算法之家,了解一下冒泡排序和快速排序这两个成员吧,let‘s go!

68845821e63a7b821749bc24c5b7a755.gif

大家好,我的中文名字叫冒泡排序,英文名字叫Bubble Sort,我在我们家族是中是比较"温和的",用你们的语言翻译过来就是,是一种比较简单的排序算法。我可以重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行,直到没有再需要交换,也就是说该数列已经排序完成。我的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。

我是如何运作的呢,今天给大家讲解一下:

第一:比较相邻的元素。比如第一个比第二个大(升序),就交换他们两个

第二:对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

第三:针对所有的元素重复以上的步骤,除了最后一个

第四:持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

嘿嘿,大家对我的工作有一定了解了吗,如果还没有的话,给大家看一下我的具体分析步骤吧,相信大家看完之后,一定就会认为我很“温和”,一定会喜欢我的。

e65e516e5efd3fabde6e82eb0ca5c9a4.png

我知道大家最近很喜欢我的新的partner,python欧巴,那么我就用python来实现一下我的灵魂代码吧,请大家认真观看我和python欧巴的表演。

3720bcfd2ed6f8cd6c42a8652a5cf872.png

表演完毕,此处应该有掌声,(掌声在哪里,让我听见你们的声音......)

弱弱的说,上面跟python欧巴配合的不是很完美,需要优化,大家可以看得出来吗?

我给大家倾诉一下吧,假设现在有一个数组[6,1,2,3,4,5],当我们进行完第一次冒泡排序过程后变为[1,2,3,4,5,6],这时候数组已经变成有序的了,程序要是再继续循环是一直在做无用功,那怎么知道数组已经是有序的了呢?计算机又不跟人类一样能眼观大局,它看不到怎么办呢,于是它就再试一次呗,接下来再进行一次冒泡排序,1和2, 2和3, 3和4, 4和5, 5和6(好累,幸亏就tm六个数)依次冒泡,计算机会发现,这次比较数组的元素都不动,于是计算机就想,既然他们那么懒,我也不管了,老子不干了!于是乎,排序程序截止了,之后计算机惊奇的发现,输出的结果竟然排好序了!(心想,还TMD真排好了,我是谁,我在哪?)

4e63fa8c86d65faf2a2b0433d24ba163.gif

为什么数组的元素不动了呢,相信聪明的你们已经发现了,就是因为排序已经排好了,所以不动了,那么怎么才能让我跟欧巴配合的更好的,我们昨天复盘了一夜,终于有了更好的配合方案,lady们and乡亲们,希望大家在来看一次我们的表演,次日某剧场,表演开始。

dc786b722a79a7af0a03727b32fc3fdc.png

非常感谢大家的收看,希望大家喜欢,如果有任何疑问,都可以在评论区评论,留言,爱你们哟。

18ae3c27450bff803124d0cbfaa363bf.gif

def2aa0e56d08c4eac2ef04d6a157617.png

f1f01e3b4740d75217fee412bebf9849.png

留言区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值