带你走近,走进算法:探秘冒泡排序

今天心血来潮,想和大家分享我对冒泡排序算法的学习心得.

一、走近算法

        在开始冒泡排序前,先说说什么是算法吧。算法像是妈妈做菜时的菜谱,当要做一道美味的菜肴时,菜谱会详细地告诉我们先做什么,再做什么,然后做什么,放多少调料。按照一定步骤,我们就能做出想要的美食(排除失误啊^_^)。算法也是如此,它是计算机解决问题的一系列明确步骤,只要计算机按照这些步骤执行,就能得到我们想要的结果,当然,它不会失误,除了卡机网络断开

二、生活中的排序

        在生活里,排序的场景无处不在,all around us。我们排队去做操,老师或是体委会让大家按照身高从低到高到站好队;整理书架上的书籍,我们可能会按照书籍的类别,把文学类、科普类、漫画类等分别归类摆放,也可能按照书籍的大小,从薄到厚或者从厚到薄排列。这些都是排序,而计算机的排序算法,和这些生活中的行为是相似的,只是计算机处理的是大量的数据,而不是现实里的东西。

三、探秘冒泡排序

        冒泡排序是一种排序算法,它的原理既简单又有趣,顾名思义,就是像气泡在水中上升一样。

        

        冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的列表,一次比较相邻的两个元素,如果它们的顺序不对则交换它们。这样每一次遍历都会使得列表中或最小)的元素移动到合适的位置。重复这个过程直到整个列表都有序。

        冒泡排序的实现思路是,从列表的第一个元素开始,比较相邻的两个元素,如果顺序不对就交换它们。经过一轮的比较和交换后,最大的元素就会被交换到列表的最后一个位置。然后再从第一个元素开始进行下一轮比较,直到没有需要交换的元素为止。

        假如我们有一组数字:5,3,8,2,9 ,要把它们从小到大排序。(当然,这么一小串数肯定难不倒各位啦,只是举个小小的例子^~^

        冒泡排序会从第一个数字开始,依次比较相邻的两个数字。如果前面的数字比后面的大,就把它们交换位置。第一轮比较,先比较5和3 ,5比3大,所以交换它们的位置,数组变成3,5,8,2,9 ;接着比较5和8 ,5比8小,不交换;再比较8和2 ,8比2大,交换,数组变成3,5,2,8,9 ;最后比较8和9 ,8比9小,不交换。第一轮结束,数组变成3,5,2,8,9,最大的数字9就“沉”到了最后面,就像气泡升到了水面上。

        然后开始第二轮,对前面四个数字重复同样的操作。重复重复再重复,一直重复这个过程,直到所有数字都排好序。是不是很像气泡一个一个冒出来,把大的数字慢慢“顶”到后面呀?不然为何起“冒泡排序”这个形象的名字呢。

四、用Python实现冒泡排序

        我们可以用编程来实现冒泡排序。下面是用Python写的冒泡排序代码:

def bubble_sort(a):
    n = len(a)
    for i in range(n):
        for j in range(0, n-i-1):
            if a[j] > a[j+1]:
                a[j], a[j+1] = a[j+1], a[j]

# 测试
a = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(a)

print("排序后的数组:")
for i in range(len(a)):
    print(a[i], end=" ")
 


       在这段代码里,我们定义了一个bubble_sort函数,它接受一个数组a作为参数。函数里有两层循环,外层循环控制比较的轮数,内层循环负责每一轮中的比较和交换操作。运行这段代码,就能得到排好序的列表。

        Okok,今天就到这了。

有什么不对之处,请各位大佬多多赐教!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值