冒泡排序:
def bubble_sort(list):
count = 0
length = len(list)
for k in range(length-1):
for i in range(length-1-k):
if list[i] > list[i+1]:
list[i],list[i+1] = list[i+1],list[i]
count += 1
if count == 0:
break
return list
选择排序:
def select_sotr(list):
length = len(list)
for i in range(length-1):
min_index = i
for j in range(i+1,length):
if list[i] > list[j]:
min_index = j
if min_index != i:
list[min_index],list[i] = list[i],list[min_index]
return list
插入排序:
def insert_sort(list):
length = len(list)
for i in range(1,length):
j = i
while j > 0:
if list[j] < list[j-1]:
list[j],list[j-1] = list[j-1],list[j]
j -= 1
else:
break
return list
快速排序:
def quick_sort(list):
if len(list) >= 2:
mid = list[0] #选取第一个元素为基准数
list.remove(mid) #从列表中移除基准数
left,right = [],[] #定义基准两侧的列表
for num in list:
if num < mid:
left.append(num)
else:
right.append(num)
data = quick_sort(left) + [mid] + quick_sort(right)
else:
data = list
return data
归并排序:
def merg_sort(list):
n = len(list)
if n <= 1:
return list
mid = n//2
left_list = merg_sort(list[:mid])
right_list = merg_sort(list[mid:])
#合并
result = []
left_point,right_point = 0,0
while left_point < len(left_list) and right_point < len(right_list):
if left_list[left_point] < right_list[right_point]:
result.append(left_list[left_point])
left_point += 1
else:
result.append(right_list[right_point])
right_point += 1
#退出循环后,将不为空的列表元素添加到result中
result += left_list[left_point:]
result += right_list[right_point:]
return result