python实现快速排序的示例(二分法思想)


Posted in Python onMarch 12, 2018

本文介绍了python实现快速排序的示例(二分法思想),分享给大家,具体如下:

实现思路

将所需要的数字存入一个列表中

1.首先,设置将最左侧的那个数设置为基准数,在列表中索引为0
2.然后设置两个移动位(用于比较),分别为最左边和最右边
3.然后最右边那位向左移寻找比基准数小的那一位,最右边那位则从左向右寻找比基准数大的那一位
4.再后,将找到的两位对应的数字替换,继续执行3,直到两个移动位相遇,把基准为替换到相遇的那一位
5.最后,将列表以基准数那一位一分为二切开,左边和右边部分继续执行上述1-4步,直到没有比较数为止(也就是一个数),排序完成。

看下图你就明白了:

python实现快速排序的示例(二分法思想)

实现代码

# coding: utf-8
# 快速排序,利用二分思想实现
def quick_sort(list, left, right):
  if left > right:
    return
  temp = list[left]
  i = left
  j = right
  while i != j:
    # 先从右向左寻找
    while list[j] >= temp and i < j:
      j -= 1
    # 再从左向右寻找
    while list[i] <= temp and i < j:
      i += 1
    if i < j:
      t = list[i]
      list[i] = list[j]
      list[j] = t
  # 基准数替换
  list[left] = list[i]
  list[i] = temp
  # 递归调用
  quick_sort(list, left, i - 1)
  quick_sort(list, i + 1, right)

while True:
  list = []
  try:
    num = int(input('你想比较几个数?\n'))
  except ValueError:
    continue
  for k in range(num):
    a = int(input('请输入第' + str(k+1) + '个数:\n'))
    list.append(a)
  quick_sort(list, 0, num-1)
  print('排序结果为:')
  for l in range(len(list)):
    print(list[l], end=' ')
  print()

快速排序比较冒泡排序效率要高得多~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python中的strftime()方法的使用
May 22 Python
Python获取当前函数名称方法实例分享
Jan 18 Python
Python元组拆包和具名元组解析实例详解
Mar 26 Python
Python Pandas批量读取csv文件到dataframe的方法
Oct 08 Python
Django框架基础模板标签与filter使用方法详解
Jul 23 Python
python文档字符串(函数使用说明)使用详解
Jul 30 Python
python判断自身是否正在运行的方法
Aug 08 Python
对Django中内置的User模型实例详解
Aug 16 Python
PyTorch中Tensor的拼接与拆分的实现
Aug 18 Python
python Timer 类使用介绍
Dec 28 Python
jupyter 添加不同内核的操作
Feb 06 Python
Python基础之条件语句详解
Jun 16 Python
Python中的pack和unpack的使用
Mar 12 #Python
python文本数据相似度的度量
Mar 12 #Python
python使用jieba实现中文分词去停用词方法示例
Mar 11 #Python
python实现拓扑排序的基本教程
Mar 11 #Python
Python实现图片尺寸缩放脚本
Mar 10 #Python
TensorFlow平台下Python实现神经网络
Mar 10 #Python
python构建深度神经网络(续)
Mar 10 #Python
You might like
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
Div Select挡住的解决办法
2008/08/07 Javascript
javascript window对象属性整理
2009/10/24 Javascript
jQuery插件 tabBox实现代码
2010/02/09 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
Jquery 的outerHeight方法使用介绍
2013/09/11 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
jQuery类选择器用法实例
2014/12/23 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
vue实现消息的无缝滚动效果的示例代码
2017/12/05 Javascript
Vue页面骨架屏的实现方法
2018/05/22 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
ZK中使用JS读取客户端txt文件内容问题
2019/11/07 Javascript
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
Python编写的com组件发生R6034错误的原因与解决办法
2013/04/01 Python
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
python 实现一个贴吧图片爬虫的示例
2017/10/12 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
2017/12/03 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
总结python中pass的作用
2019/02/27 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
Django分组聚合查询实例分享
2020/04/29 Python
一些常用的HTML5模式(pattern) 总结
2015/07/14 HTML / CSS
英国天然保健品网站:Simply Supplements
2017/03/22 全球购物
国际象棋商店:The Chess Store
2018/07/09 全球购物
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
致标枪运动员加油稿
2014/02/15 职场文书
高二学生评语大全
2014/04/25 职场文书
护林防火标语
2014/06/27 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
2015年前台接待工作总结
2015/05/04 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
python可视化之颜色映射详解
2021/09/15 Python