python实现快速排序

来源:互联网 发布:人工智能要学什么 编辑:程序博客网 时间:2024/05/16 09:46

快速排序又称划分交换排序,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后按此方式对两部分数据分别进行快速排序,整个排序过程可递归进行

步骤为

  1. 从数列中挑出一个元素,称为“基准”(pivot)
  2. 排序数列,所有比基准小的都放在基准前,所有比基准大的都放在基准后。在这个分区结束后,该基准就处于数列的中间位置。这个过程叫做分区。
  3. 递归地把小于基准元素的子数列和大于基准元素的子数列排序

递归的最底部情形,是数列的大小是0或1

def insert_sort(alist):    # 从第二个位置,即下标为1的元素开始向前插入    for i in range(1,len(alist)):        # 从第i个元素开始向前比较,如果小于前一个元素,交换位置        for j in range(i,0,-1):            if alist[j] < alist[j-1]:                alist[j],alist[j-1] = alist[j-1],alist[j]

时间复杂度

  • 最优时间复杂度:O(nlogn)
  • 最坏时间复杂度:O(n2)
  • 稳定性:不稳定
原创粉丝点击