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 相关文章推荐
PyMongo安装使用笔记
Apr 27 Python
Python检测一个对象是否为字符串类的方法
May 21 Python
Python随机生成手机号、数字的方法详解
Jul 21 Python
把JSON数据格式转换为Python的类对象方法详解(两种方法)
Jun 04 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
python cv2截取不规则区域图片实例
Dec 21 Python
Win系统PyQt5安装和使用教程
Dec 25 Python
在PyCharm中实现添加快捷模块
Feb 12 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
Aug 07 Python
解决python打开https出现certificate verify failed的问题
Sep 03 Python
pytorch 如何使用amp进行混合精度训练
May 24 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 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
CodeIgniter安全相关设置汇总
2014/07/03 PHP
PHP、Java des加密解密实例
2015/04/27 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
js选取多个或单个元素的实现代码(用class)
2012/08/22 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
JQuery 中几个类选择器的简单使用介绍
2013/03/14 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
2014/03/12 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
node实现定时发送邮件的示例代码
2017/08/26 Javascript
Vue按时间段查询数据组件使用详解
2020/08/21 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
python分析nignx访问日志脚本分享
2015/02/26 Python
Python实现简单的四则运算计算器
2016/11/02 Python
python实现二叉查找树实例代码
2018/02/08 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
2019/08/05 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
Python+OpenCV图像处理——实现直线检测
2020/10/23 Python
Python中读取文件名中的数字的实例详解
2020/12/25 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
《望洞庭》教学反思
2014/02/16 职场文书
《去年的树》教学反思
2014/04/11 职场文书
领导班子四风表现材料
2014/08/23 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
MySQL安装后默认自带数据库的作用详解
2021/04/27 MySQL
深入详解JS函数的柯里化
2021/06/09 Javascript
基于JavaScript实现省市联动效果
2021/06/22 Javascript
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技