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中cPickle用法例子分享
Jan 03 Python
python处理cookie详解
Feb 07 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
PyTorch线性回归和逻辑回归实战示例
May 22 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
利用Python实现微信找房机器人实例教程
Mar 10 Python
python安装pil库方法及代码
Jun 25 Python
Python异常模块traceback用法实例分析
Oct 22 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
Apr 12 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 Python
解决PDF 转图片时丢文字的一种可能方式
Mar 04 Python
python绘制箱型图
Apr 27 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
WordPress中用于更新伪静态规则的PHP代码实例讲解
2015/12/18 PHP
php自定义扩展名获取函数示例
2016/12/12 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
你所要知道JS(DHTML)中的一些技巧
2007/01/09 Javascript
利用JQuery和JS实现奇偶行背景颜色自定义效果
2012/11/19 Javascript
教你使用javascript简单写一个页面模板引擎
2015/05/05 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
js实现全国省份城市级联下拉菜单效果代码
2015/09/07 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
Vue中之nextTick函数源码分析详解
2017/10/17 Javascript
Angular 数据请求的实现方法
2018/05/07 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
如何使用electron-builder及electron-updater给项目配置自动更新
2018/12/24 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
小程序跨页面交互的作用与方法详解
2020/01/07 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
[16:56]教你分分钟做大人:司夜刺客
2014/10/30 DOTA
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
Tensorflow 自定义loss的情况下初始化部分变量方式
2020/01/06 Python
python中pickle模块浅析
2020/12/29 Python
JD Sports法国:英国篮球和运动时尚的领导者
2017/09/28 全球购物
匡威意大利官方商店 :Converse意大利
2018/11/27 全球购物
在线课程:Skillshare
2019/04/02 全球购物
学生干部学习的自我评价
2014/02/18 职场文书
环保建议书100字
2014/05/14 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
试用期辞职信范文
2015/03/02 职场文书
七夕情人节问候语
2015/11/11 职场文书
运动会班级口号霸气押韵
2015/12/24 职场文书
导游词之崇武古城
2019/10/07 职场文书
CSS基础详解
2021/10/16 HTML / CSS