#快速排序
def my_sort_3(data_list):
k=0
def my_sort_3_1(data_list):
if len(data_list)<=1: # 若列表长度为0或1,直接输出
return data_list
key = data_list[0] # 取数组的第一个数作为基准值
l_list, m_list, r_list = [], [], [] # 定义空列表用来储存小于/等于/大于基准值的元素
for i in range(0, len(data_list)): # 遍历列表,其他元素与基准值比较,归类、整理到三个列表中
if data_list[i] < key:
l_list.append(data_list[i])
elif data_list[i] > key:
r_list.append(data_list[i])
else:
m_list.append(data_list[i])
else:
nonlocal k
k+=1
print('第%s次排序完成' % k)
return my_sort_3_1(l_list) + m_list + my_sort_3_1(r_list) #递归调用
my_sort_3_1(data_list)
return my_sort_3_1(data_list)
if __name__ == '__main__':
a=[7,10,11,3,5,6]
print(my_sort_3(a))
print()
a=[7,7,11,3,5,6]
print(my_sort_3(a))
# 冒泡排序
def my_sort_2(data_list):
for i in range(len(data_list)-1):
for j in range(i,len(data_list)):
if data_list[j] < data_list[i]:
k = data_list[i]
data_list[i] = data_list[j]
data_list[j] = k
return data_list
if __name__ == '__main__':
a=[7,10,11,3,5,6]
print(my_sort_2(a))
print()
a=[7,7,11,3,5,6]
print(my_sort_2(a))
#选择排序
def my_sort_1(data_list):
for i in range(len(data_list)-1):
a=i
for j in range(i,len(data_list)):
if data_list[j] < data_list[a]:
a=j
if a!=i:
data_list[i],data_list[a] = data_list[a],data_list[i]
return data_list
if __name__ == '__main__':
a=[7,10,11,3,5,6]
print(my_sort_1(a))
print()
a=[7,7,11,3,5,6]
print(my_sort_1(a))
排序算法-python
于 2023-04-14 19:40:03 首次发布