lista = [9,1,5,19,20,33,1,1,2,3,4,1,11,22,100,222,111, 8, 8, 8, 9, 9, 10,1,1,1] # 测试
'''
@作用:定义用来比较的函数
@参数:listArr需要排序的列表,需要划分的元素:left起始位置,right结束位置
'''
def quikSwith(listArr, left, right):
div = listArr[left] # 划分使用的分界值,使用第一个元素
position = left+1 # 记录划分位置
for i in range(left+1, right+1):
if listArr[i] <= div:
# 将小于分界值的数字交换到当前的记录位置,并且记录位置后移一位
listArr[i], listArr[position] = listArr[position], listArr[i]
position += 1
print(listArr)
if position > right:
position = right
elif position > left and position < right:
position = position - 1
# 将分界值交换到记录位置
if listArr[position] <= div:
listArr[position], listArr[left] = listArr[left], listArr[position]
print(listArr)
print(position)
return position # 返回记录位置
pass
def quikSort(listArr, left, right):
# 退出条件
if left >= right:
return
position = quikSwith(listArr, left, right)
quikSort(listArr, left, position - 1 ) # 前部分
quikSort(listArr, position + 1, right) # 后部分
pass
print(quikSort(lista, 0, len(lista) - 1))
print(lista)