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 相关文章推荐
仅用500行Python代码实现一个英文解析器的教程
Apr 02 Python
Python批量转换文件编码格式
May 17 Python
python虚拟环境的安装配置图文教程
Oct 20 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
Python爬虫实现验证码登录代码实例
May 10 Python
python rsync服务器之间文件夹同步脚本
Aug 29 Python
python 画函数曲线示例
Dec 04 Python
Python+OpenCV图像处理—— 色彩空间转换
Oct 22 Python
Jupyter安装链接aconda实现过程图解
Nov 02 Python
Django Admin后台模型列表页面如何添加自定义操作按钮
Nov 11 Python
scrapy在python爬虫中搭建出错的解决方法
Nov 22 Python
Python可视化神器pyecharts之绘制地理图表练习
Jul 07 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网页显示各种语法错误
2013/09/23 PHP
浅谈ThinkPHP的URL重写
2014/11/25 PHP
PHP文件缓存类示例分享
2015/01/30 PHP
PHP实现动态web服务器方法
2015/07/29 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
javascript显示选择目录对话框的代码
2008/11/10 Javascript
Javascript 中的类和闭包
2010/01/08 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
Bootstrap基本样式学习笔记之标签(5)
2016/12/07 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
2018/01/26 Javascript
javascript代码优化的8点总结
2018/01/29 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
Vue实现购物小球抛物线的方法实例
2020/11/22 Vue.js
python删除过期文件的方法
2015/05/29 Python
浅谈python中的getattr函数 hasattr函数
2016/06/14 Python
Python实现ssh批量登录并执行命令
2016/10/25 Python
Python 爬虫的原理
2020/07/30 Python
python 用Matplotlib作图中有多个Y轴
2020/11/28 Python
美国高端医师级美容产品电商:BeautifiedYou.com
2017/04/17 全球购物
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
银行批评与自我批评
2014/02/10 职场文书
技校毕业生自荐信
2014/06/03 职场文书
小学生运动会报道稿
2014/09/12 职场文书
小学教学工作总结2015
2015/05/13 职场文书
运动会3000米加油稿
2015/07/21 职场文书
Nginx进程调度问题详解
2021/09/25 Servers
Python数据处理的三个实用技巧分享
2022/04/01 Python