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 相关文章推荐
easy_install python包安装管理工具介绍
Feb 10 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
Python使用struct处理二进制的实例详解
Sep 11 Python
基于python代码实现简易滤除数字的方法
Jul 17 Python
对Python实现累加函数的方法详解
Jan 23 Python
pandas DataFrame行或列的删除方法的实现示例
Aug 02 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
python代码中怎么换行
Jun 17 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 Python
Python selenium环境搭建实现过程解析
Sep 08 Python
解决python存数据库速度太慢的问题
Apr 23 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
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
php GUID生成函数和类
2014/03/10 PHP
php计算两个日期时间差(返回年、月、日)
2014/06/19 PHP
thinkphp jquery实现图片上传和预览效果
2020/07/22 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
javascript Keycode对照表
2009/10/24 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
mac下的nodejs环境安装的步骤
2017/05/24 NodeJs
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
微信小程序日期时间选择器使用方法
2018/02/01 Javascript
jQuery动态操作表单示例【基于table表格】
2018/12/06 jQuery
vue中的mvvm模式讲解
2019/01/31 Javascript
jQuery zTree插件快速实现目录树
2019/08/16 jQuery
vue实现文件上传读取及下载功能
2020/11/17 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
python冒泡排序算法的实现代码
2013/11/21 Python
python开启多个子进程并行运行的方法
2015/04/18 Python
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
Django集成CAS单点登录的方法示例
2019/06/10 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
Python3.7实现验证码登录方式代码实例
2020/02/14 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
副总经理工作职责
2013/11/28 职场文书
单位授权委托书范本
2014/09/26 职场文书
市场营销计划书范文
2015/01/16 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
《秋天的图画》教学反思
2016/02/19 职场文书