Python实现快速排序的方法详解

 更新时间:2019年10月25日 11:40:26   作者:鲸落丶  
这篇文章主要介绍了Python实现快速排序的方法,结合实例形式详细分析了快速排序的思路、原理及Python具体实现技巧与相关操作注意事项,需要的朋友可以参考下

本文实例讲述了Python实现快速排序的方法。分享给大家供大家参考,具体如下:

说起快排的Python实现,首先谈一下,快速排序的思路:

1、取一个参考值放到列表中间,初次排序后,让左侧的值都比他小,右侧的值,都比他大。

2、分别对左侧和右侧的部分递归第1步的操作

实现思路:

  • 两个指针left,right分别指向列表的第一个元素和最后一个元素,然后取一个参考值,默认为第一个列表的第一个元素list[0],称为K
  • 然后left指向的值先和参考值K进行比较,若list[left]小于或等于K值,left就一直向右移动,left+1,直到移动到大于K值的地方,停住
  • right指向的值和参考值K进行比较,若list[right]大于K值,right就一直向左移动,right-1,直到移动到小于K值的地方,停住
  • 此时,left和right若还没有相遇,即left还小于right,则二者指向的值互换
  • 若已经相遇则说明,第一次排序已经完成,将list[right]与list[0]的值进行互换,进行之后的递归

编程实现:

#快排的主函数,传入参数为一个列表,左右两端的下标
def QuickSort(list,low,high):
  if high > low:
    #传入参数,通过Partitions函数,获取k下标值
    k = Partitions(list,low,high)
    #递归排序列表k下标左侧的列表
    QuickSort(list,low,k-1)
    # 递归排序列表k下标右侧的列表
    QuickSort(list,k+1,high)
def Partitions(list,low,high):
  left = low
  right = high
  #将最左侧的值赋值给参考值k
  k = list[low]
  #当left下标,小于right下标的情况下,此时判断二者移动是否相交,若未相交,则一直循环
  while left < right :
    #当left对应的值小于k参考值,就一直向右移动
    while list[left] <= k:
      left += 1
    # 当right对应的值大于k参考值,就一直向左移动
    while list[right] > k:
      right = right - 1
    #若移动完,二者仍未相遇则交换下标对应的值
    if left < right:
      list[left],list[right] = list[right],list[left]
  #若移动完,已经相遇,则交换right对应的值和参考值
  list[low] = list[right]
  list[right] = k
  #返回k值
  return right
list_demo = [6,1,2,7,9,3,4,5,10,8]
print(list_demo)
QuickSort(list_demo,0,9)
print(list_demo)

运行结果:

[6, 1, 2, 7, 9, 3, 4, 5, 10, 8]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

PS:这里再为大家推荐一款关于排序的演示工具供大家参考:

在线动画演示插入/选择/冒泡/归并/希尔/快速排序算法过程工具:
http://tools.jb51.net/aideddesign/paixu_ys

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python列表(list)操作技巧总结》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • 深入解析Python中的多进程

    深入解析Python中的多进程

    这篇文章主要介绍了深入解析Python中的多进程,“Python中的多进程是通过multiprocessing包来实现的,和多线程的threading.Thread差不多,它可以利用multiprocessing.Process对象来创建一个进程对象
    2022-06-06
  • Python数据结构与算法之跳表详解

    Python数据结构与算法之跳表详解

    跳表是带有附加指针的链表,使用这些附加指针可以跳过一些中间结点,用以快速完成查找、插入和删除等操作。本节将详细介绍跳表的相关概念及其具体实现,需要的可以参考一下
    2022-02-02
  • Python中np.where()用法具体实例

    Python中np.where()用法具体实例

    这篇文章主要给大家介绍了关于Python中np.where()用法的相关资料,np.where()是NumPy库中的一个函数,主要用于根据条件从数组中选择元素,文中给出了详细的代码示例,需要的朋友可以参考下
    2023-08-08
  • python 的生产者和消费者模式

    python 的生产者和消费者模式

    这篇文章主要介绍了python 的生产者和python 的消费者模式的具体相关资料,需要的朋友可以参考下面文章内容
    2021-09-09
  • windows下cx_Freeze生成Python可执行程序的详细步骤

    windows下cx_Freeze生成Python可执行程序的详细步骤

    这篇文章主要介绍了windows下cx_Freeze生成Python可执行程序的详细步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • python的绘图工具matplotlib使用实例

    python的绘图工具matplotlib使用实例

    这篇文章主要介绍了python的绘图工具matplotlib使用实例,需要的朋友可以参考下
    2014-07-07
  • python爬虫库scrapy简单使用实例详解

    python爬虫库scrapy简单使用实例详解

    这篇文章主要介绍了python爬虫库scrapy简单使用实例详解,需要的朋友可以参考下
    2020-02-02
  • python的Tqdm模块的使用

    python的Tqdm模块的使用

    这篇文章主要介绍了python的Tqdm模块的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • Python 防止死锁的方法

    Python 防止死锁的方法

    这篇文章主要介绍了Python 防止死锁的方法,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • python tkinter canvas 显示图片的示例

    python tkinter canvas 显示图片的示例

    今天小编就为大家分享一篇python tkinter canvas 显示图片的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06

最新评论