冒泡算法基本原理
依次比较两个数的大小,如果前面那个数字比后面的数字大就交换两个数字的位置。
代码实现
依据冒泡算法原理,我们来实现排序。 首先定义一个列表:
list = [12, 23, 98, 90, 80, 10, 98, 74]
使用if判断,进行排序
if list[j] > list[j + 1]:
list[j], list[j + 1] = list[j + 1], list[j]
注意:这里的j表示索引,索引具体范围咱们现在还没有确定,所以没有具体写出。 下面我们分析索引,根据原理我们可以发现这个列表只需要比较7次即可,而列表长度是8,因此索引可以表示成列表长度减一。
for j in range(len(list) - 1 - i):
if list[j] > list[j + 1]:
list[j], list[j + 1] = list[j + 1], list[j]
这里我们实现了一次排序,这次排序可以得到列表中的最大值,列表中的最大值会放在列表末尾。 由上面分析我们不难看出只需要对这个列表多次进行排序就可以得到咱们想要的结果。那么我们需要对列表进行多少次上面这样的排序呢? 我们只需要排列列表长度减一次,因为最后一次排列是将两个最小的数字进行交换,所以不需要排列列表长度次数。 下面是代码实现:
list = [12, 23, 98, 90, 80, 10, 98, 74]
for i in range(len(list) - 1):
for j in range(len(list) - 1 - i):
if list[j] > list[j + 1]:
list[j], list[j + 1] = list[j + 1], list[j]
print(list)
代码运行结果如图所示:
|