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 相关文章推荐
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
总结python中pass的作用
Feb 27 Python
Appium+python自动化怎么查看程序所占端口号和IP
Jun 14 Python
python列表,字典,元组简单用法示例
Jul 11 Python
使用python爬取抖音视频列表信息
Jul 15 Python
pytest中文文档之编写断言
Sep 12 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
解决pyCharm中 module 调用失败的问题
Feb 12 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 Python
浅析pip安装第三方库及pycharm中导入第三方库的问题
Mar 10 Python
python爬取豆瓣电影排行榜(requests)的示例代码
Feb 18 Python
python openpyxl模块的使用详解
Feb 25 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简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
PHP 字符截取 解决中文的截取问题,不用mb系列
2009/09/29 PHP
PHP利用str_replace防注入的方法
2013/11/10 PHP
php把session写入数据库示例
2014/02/26 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
js调用flash的效果代码
2008/04/26 Javascript
一句话JavaScript表单验证代码
2009/08/02 Javascript
jQuery实现单击按钮遮罩弹出对话框(仿天猫的删除对话框)
2014/04/10 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
python将html转成PDF的实现代码(包含中文)
2013/03/04 Python
python执行使用shell命令方法分享
2017/11/08 Python
python高阶爬虫实战分析
2018/07/29 Python
python求质数的3种方法
2018/09/28 Python
PyQt5组件读取参数的实例
2019/06/25 Python
python模式 工厂模式原理及实例详解
2020/02/11 Python
Django封装交互接口代码
2020/07/12 Python
Python直接赋值及深浅拷贝原理详解
2020/09/05 Python
Python random模块的使用示例
2020/10/10 Python
pycharm + django跨域无提示的解决方法
2020/12/06 Python
中国电视购物:快乐购
2017/02/04 全球购物
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
资深生产主管自我评价
2013/09/22 职场文书
2014年小学德育工作总结
2014/12/05 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
道德与公民自我评价
2015/03/09 职场文书
匿名信格式范文
2015/05/27 职场文书
安全教育片观后感
2015/06/17 职场文书
2016年学习雷锋精神广播稿
2015/12/17 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL