快速排序是排序方法中比较高效的排序法之一,也是面试中也经常问到的高频题之一。面试中如果想考察这方面的知识时,通常以“写一下快排吧?”“快排的复杂度多少?”等等方式进行。
思路:递归实现快排相对比较些,如果是非递归实现,通常要借用栈实现。
附上代码:
def quicksort(lists,left,right):
if left >= right:
return lists
key = lists[left]
low = left
high = right
while left < right:
while left < right and lists[right] >= key:
right -= 1
lists[left] = lists[right]
while left < right and lists[left] <= key:
left += 1
lists[right] = lists[left]
lists[right] = key
quicksort(lists,low,left-1)
quicksort(lists,left+1,high)
return lists
def main():
lists = [11,23,5,2,44,88,42]
length = len(lists)