数据结构学习笔记12(北大公开课)目录
排序和查找
一、知识概览
本章主要讲解六种排序算法,知识概览如下:
1.1 冒泡排序算法
1.2 选择排序算法
二、代码实现
2.1冒泡排序
# 冒泡排序代码
def bubbleSort(alist):
# 趟数从n-1开始一直到1
for passnum in range(len(alist) - 1, 0, -1):
# 每一趟中,比对和交换的范围
for i in range(passnum):
if alist[i] > alist[i + 1]:
temp = alist[i]
alist[i] = alist[i + 1]
alist[i + 1] = temp
# 也可以写成alist[i],alist[i+1]=alist[i+1],alist[i]
alist = [54, 26, 93, 17, 77, 31]
bubbleSort(alist)
print(alist)
2.2 冒泡排序改进算法
# BS改进,提前退出
def bubbleSort2(alist):
exchange = True
passnum = len(alist) - 1
while passnum > 0 and exchange:
exchange = False
for i in range(passnum):
if alist[i] > alist[i + 1]:
exchange = True
temp = alist[i]
alist[i] = alist[i + 1]
alist[i + 1] = temp
passnum = passnum - 1
alist = [54, 26, 93, 17, 77, 31]
bubbleSort2(alist)
print(alist)
2.3 选择排序算法
#选择排序
def selectionSort(alist):
for fillslot in range(len(alist) - 1, 0, -1):
positionOfMax=0
for location in range(1,fillslot+1):
if alist[location]>alist[positionOfMax]:
positionOfMax=location
temp=alist[fillslot]
alist[fillslot]=alist[positionOfMax]
alist[positionOfMax]=temp
alist = [54, 26, 93, 17, 77, 31]
selectionSort(alist)
print(alist)
2.4 输出结果
[17, 26, 31, 54, 77, 93]
[17, 26, 31, 54, 77, 93]
[17, 26, 31, 54, 77, 93]