关闭

Python实现快速排序

标签: 快速排序python递归算法
125人阅读 评论(0) 收藏 举报
分类:
# 使用递归快速排序算法排序一个数组或列表
def quickSort( theSeq ):
  n = len( theSeq )
  recQuickSort( theSeq, 0, n-1 )

# 使用虚拟片段递归实现 
def recQuickSort( theSeq, first, last ):
  # 检查基本情况
  if first >= last :
    return
  else :
    # 保存主元pivot
    pivot = theSeq[first]

    #划分序列并获取主元位置
    pos = partitionSeq( theSeq, first, last )
    # 在两个子序列上重复处理过程
    recQuickSort( theSeq, first, pos - 1 )
    recQuickSort( theSeq, pos + 1, last )

# 使用first键做主元划分子序列
def partitionSeq( theSeq, first, last ):
  # 保存主元值的副本
  pivot = theSeq[first]

  # 查找主元位置并移动主元附近元素
  left = first + 1
  right = last
  while left <= right :
    # 找到第一个大于主元的键first key 
    while left < right and theSeq[left] < pivot :
      left += 1

    # 查找序列中小于主元的最后的键Find the last key 
    while right >= left and theSeq[right] >= pivot :
      right -= 1

    # 如果没能完成这次划分则交换两个键
    if left < right :
      tmp = theSeq[left]
      theSeq[left] = theSeq[right]
      theSeq[right] = tmp

  # 把主元放到适当位置
  if right != first :
    theSeq[first] = theSeq[right]
    theSeq[right] = pivot

  # 返回主元值得索引位置
  return right
0
0
查看评论

快速排序的四种python实现

快速排序算法,简称快排,是最实用的排序算法,没有之一,各大语言标准库的排序函数也基本都是基于快排实现的 本文用python语言介绍四种不同的快排实现 1. 一行代码实现的简洁版本 quick_sort = lambda array: array if len(array) array[0]]) ...
  • razor87
  • razor87
  • 2017-05-04 15:30
  • 655

算法导论程序14-快速排序的随机化版本(Python)

与始终采用A[r]作为主元的方法不同,随机抽样是从子数组A[p...r]中随机选择一个元素作为主元。 首先将A[r]与A[p...r]中随机选出的一个元素进行交换,通过对序列p,,,,r的随机抽样,我们可以保证主元元素x=A[r]是等概率地从子数组r-p+1个元素中选取的。因为主元元素是随机选 ...
  • zhang_xiaomeng
  • zhang_xiaomeng
  • 2017-05-24 14:11
  • 147

Python实现快速排列算法

算法思想:       通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序 过程可以递归进行,以此达到整个数据变成有序序列。 算法流程步骤: 1)设...
  • Fireman1994
  • Fireman1994
  • 2017-11-09 22:27
  • 96

Python实现快速排序

用Python写了一个快速排序。简单练习一下
  • ACE_J
  • ACE_J
  • 2014-06-22 19:50
  • 5116

快速排序quick_sort(python的两种实现方式)

排序算法有很多,目前最好的是quick_sort:unstable,spatial complexity is nlogN. 快速排序原理python实现严蔚敏的 datastruct书中有伪代码实现,因为Amazon面试需要排序,所以用python实现了。 两种实现方法,功能一致,效率没测,请高手...
  • longshenlmj
  • longshenlmj
  • 2016-06-08 15:41
  • 6327

Python实现快速排序算法

快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快...
  • ws_cs_dn
  • ws_cs_dn
  • 2014-09-01 16:07
  • 2271

快速排序Python实现

__author__ = 'LL_YING' def Quicksort(array): less = []; greater = [] if len(array) 1: return array else: pivot = a...
  • qq_15297487
  • qq_15297487
  • 2015-09-07 22:17
  • 218

快速排序(python实现)

快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。设要排序的数组是A[0]……A...
  • kan2281123066
  • kan2281123066
  • 2017-10-12 00:55
  • 74

python实现快速排序

#快速排序,i=0,j=N-1,第一个数组元素为关键数据,从j开始向前搜索(j--),找到第一个小于key的元素,str[i]=str[j];从i开始向后搜索(i++),找到第一个大于key的元素,str[j]=str[i]
  • helina00
  • helina00
  • 2014-06-20 15:12
  • 361

用python实现快速排序算法

本文主要介绍用python实现基本的快速排序算法,体会一下python的快排代码可以写得多么简洁。
  • dnxbjyj
  • dnxbjyj
  • 2017-04-18 00:05
  • 1097
    个人资料
    • 访问:9562次
    • 积分:359
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:5篇
    • 译文:14篇
    • 评论:3条