冒泡法:
从前到后不断对比相邻的两数,最大的放到后面
第一次小循环后,最大的放到最后
第二次小循环后,第二大的放到倒数第二的位置
以此类推
需要的总次数是这个表的长度减一
def function_bbs( a_list ):
len_a = len(a_list) -1 # 未排序的部分
while len_a >= 1: #把最大的数不断放到最后
for i in range( len_a ):
if a_list[i] > a_list[i+1]:
a_list[i], a_list[i+1] = a_list[i+1], a_list[i] # 对比相邻的前后两个数,大的放后面
len_a -= 1
import random
a = [random.randint(1, 100) for i in range(10)] # 获取随机生成的十个数的列表
function_bbs(a)
print(a)
选择排序:
找出最小的数,然后放到第一个,然后从第二个开始寻找最小的数,接在第一个后面
# select_sort
def func_sls( lst ):
for i in range(len(lst)-1):
# find the minimal one i to the end
min_idx = i
for j in range(i+1, len(lst)): # 找到第i+1个后面最小的数
if lst[j] < lst[min_idx]:
min_idx = j
lst[i],lst[min_idx] = lst[min_idx], lst[i] #把最小的数与第i+1个交换
import random
lst = [random.randint(1, 100) for i in range(10)] # 获取随机生成的十个数的列表
print("before sorting: {}".format(lst))
func_sls( lst )
print("after sorting:{}".format(lst))