算法•排序【乡村培育站暑期学习】
一、冒泡排序
冒泡排序概念:在一列数据中把较大(或较小)的数据逐次向右推移的一种排序技术。每个数如同水中气泡一样,小的气泡上升,被排在最上面;而大的气泡被依次排在下面,这样的过程我们比喻成“冒泡”。冒泡排序是最简单的排序方法,分为内外两层循环。
冒泡排序的基本思想:依次比较相邻的两个数,将小数放在前面,大数放在后面。
第一遍(轮、趟)从第1个元素开始,让它和第2个元素进行比较,若出现反序(大数在前,小数在后)则交换;然后让第2个元素和第3个元素进行比较,若出现反序则交换;依次类推,直到比较完最后一对元素为止。第一遍排序结束时,最后一个元素为所有元素中的最大值。
第二遍还是从第1个元素开始,让它和第2个元素进行比较,若出现反序则交换;然后让第2个元素和第3个元素进行比较,若出现反序则交换;依次类推,直到比较完最后一对元素(即倒数第二对数对)为止。这样,倒数第二个数为第二大的数。
……
n个数排序共需进行n-1遍。

范例一:冒泡排序。
1 #coding:utf-8
2 #冒泡排序
3 list = [22, 18, 33, 6, 17, 13]
4 for i in range(len(list)-1):
5 for j in range(len(list)-i-1):
6 if list[j]>list[j+1]:
7 list[j+1], list[j] = list[j], list[j+1]
8 print(list)
执行结果:[6, 13, 17, 18, 22, 33]
范例二:冒泡排序用函数实现,实现代码的复用。
1 #冒泡排序用函数来实现,实现代码的复用。
2 def bubbleSort(myList):
3 for i in range(len(myList) - 1):
4 for j in range(len(myList) - 1 - i):
5 if myList[j] > myList[j + 1]:
6 myList[j], myList[j + 1] = myList[j + 1], myList[j]
7 def main():
8 list_n = [22, 18, 33, 6, 17, 13] #引用数据类型
9 bubbleSort(list_n)
10 print(list_n)
11 if __name__ == "__main__":
12 main()
执行结果:[6, 13, 17, 18, 22, 33]
二、选择排序
选择排序概念:
选择排序的基本思想(以升序为例):
范例三:选择排序。
1 #排序算法对冒泡算法进行改进
2 a = [3, 4, 1, 2, 0, 9, 10]
3 for i in range(len(a)-1):#遍数
4 k = i
5 for j in range(i + 1, len(a)):
6 if a[k] > a[j]:
7 k = j
8 if k != i:
9 a[k], a[i] = a[i], a[k]
10 print(a)

浙公网安备 33010602011771号