快速排序
def quicksort(head, tail):
head1 = head
tail1 = tail
tmp = arr[head] # 储存临时元素
# 如果头指针小于尾指针一直循环,直到相等找到元素的正确索引跳出循环
while head < tail:
# 尾部数据大于临时元素,尾指针前移
while arr[tail] > tmp and head < tail:
tail -= 1
# 尾部数据小于等于临时元素,赋值给头指针,头指针后移
arr[head] = arr[tail]
if head < tail:
head += 1
# 头部数据大于临时元素,头指针后移
while arr[head] < tmp and head < tail:
head += 1
# 头部数据大于等于临时元素,赋值给尾指针,尾指针前移
arr[tail] = arr[head]
if head < tail:
tail -= 1
index = head # head和tail相等 是正确位置
arr[index] = tmp # 把临时元素赋值给正确位置
print(arr)
if index - 1 > head1: # 递归前半部分
quicksort(head1, index - 1)
if index + 1 < tail1: # 递归后半部分
quicksort(index + 1, tail1)
if __name__ == '__main__':
arr = [4,1,3]
quicksort(0, len(arr) - 1)