美文网首页
7. 数据结构与算法:快速排序

7. 数据结构与算法:快速排序

作者: sszhang | 来源:发表于2018-06-05 18:56 被阅读0次

快速排序(quick sort)是一种分治排序算法。该算法首先 选取 一个划分元素(partition element,有时又称为pivot);接着重排列表将其 划分 为三个部分:left(小于划分元素pivot的部分)、划分元素pivot、right(大于划分元素pivot的部分),此时,划分元素pivot已经在列表的最终位置上;然后分别对left和right两个部分进行 递归排序。

其中,划分元素的 选取 直接影响到快速排序算法的效率,通常选择列表的第一个元素或者中间元素或者最后一个元素作为划分元素,当然也有更复杂的选择方式;划分 过程根据划分元素重排列表,是快速排序算法的关键所在,该过程的原理示意图如下:

quicksort.png
def partition(L, first, last):
  pivot = L[first]
  leftmark = first + 1
  rightmark = last 

  while True:
    while L[leftmark] < pivot:
      if leftmark = = rightmark:
        break
      leftmark + =1
  
    while L[rightmark] > pivot
      rightmark -=1

    if leftmark < rightmark:
      L[leftmark], L[rightmark] = L[rightmark], L[leftmark]
    else:
      break
L[leftmark], L[rightmark] = L[rightmark], L[leftmark]

return return rightmark

def qsort(L, first, last):
    if first < last:
        split = partition(L, first, last)
        qsort(L, first, split - 1)
        qsort(L, split + 1, last)

def stdQuicksort(L):
    qsort(L, 0, len(L) - 1)

相关文章

  • 排序算法-堆排序

    参考: Java排序算法(五):堆排序 【算法与数据结构】图说堆排序 【数据结构】排序算法:希尔、归并、快速、堆排...

  • 排序算法6:快速排序

    数据结构与算法 快速排序为应用最多的排序算法,因为快速二字而闻名。快速排序和归并排序一样,采用的都是分治思想。 分...

  • 算法与数据结构路线图

    学习算法与数据结构,深刻理解计算机科学 排序算法:插入、冒泡、选择、希尔、快速、归并、堆排序、计数排序、桶排序、基...

  • 数据结构与算法——快速排序

    数据结构与算法——快速排序 快速排序,顾名思义,它速度很快,针对一般应用中各种不同的输入都要比其他排序算法快很多,...

  • (转)排序算法

    排序算法点这里 数据结构与算法——计数排序、桶排序、基数排序

  • 7. 数据结构与算法:快速排序

    快速排序(quick sort)是一种分治排序算法。该算法首先 选取 一个划分元素(partition eleme...

  • 算法与数据结构(六):堆排序

    title: 算法与数据结构(六):堆排序tags: [算法与数据结构, C语言, 堆排序]date: 2019-...

  • Python 算法大全

    这个库涵盖了多种算法和数据结构的介绍,比如: 排序算法(冒泡排序、希尔排序、插入排序、桶排序、合并排序、快速排序、...

  • 2019年5月份找工作面试知识点总结

    面试知识点 算法和数据结构 常用算法排序算法各种排序算法的时间复杂度,是否稳定内部排序快速排序 nlgn 不稳定冒...

  • C语言:关于数据的几种排序算法

    数据结构的排序算法有很多种。其中,快速排序、希尔排序、堆排序、直接选择排序不是稳定的排序算法;基数排序、冒泡排序、...

网友评论

      本文标题:7. 数据结构与算法:快速排序

      本文链接:https://www.haomeiwen.com/subject/zzymsftx.html