快速排序:快速排序算法 时间复杂度为(Nlogn),最坏时间复杂度n的平方
直接看代码
#li是列表,fist,end是前后指针,在列表的第一个元素下标和最后一个元素下标
def quick_sort(li, fist, end):
#如何前后指针相等时要推出循环
if fist >= end:
return
#第一个元素最为基数
jishu = li[fist]
left = fist
right = end
#前元素如何下标如果小于后元素下标,一直循环
while left < right:
#判断这个右边元素是否大于基数,如何大于则移动下标,否则交换前后下标元素
while li[right] >= jishu and left < right:
right -= 1
else:
li[left] = li[right]
#道理同上
while li[left] < jishu and left < right:
left += 1
else:
li[right] = li[left]
#找到基数应该在的位置
li[left] = jishu
#将列表根据基数所在位置分成两个子列表,继续循环
quick_sort(li, fist, left - 1)
quick_sort(li, left + 1, len(li) - 1)