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 相关文章推荐
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
Dec 04 Python
Python实现获取某天是某个月中的第几周
Feb 11 Python
用Python进行一些简单的自然语言处理的教程
Mar 31 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
浅述python中深浅拷贝原理
Sep 18 Python
python pyheatmap包绘制热力图
Nov 09 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
关于Python-faker的函数效果一览
Nov 28 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
Feb 27 Python
10个顶级Python实用库推荐
Mar 04 Python
对Keras自带Loss Function的深入研究
May 25 Python
Python使用openpyxl批量处理数据
Jun 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
php miniBB中文乱码问题解决方法
2008/11/25 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
2019/06/14 PHP
JS查看对象功能代码
2008/04/25 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
Jquery实现图片左右自动滚动示例
2013/09/25 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
AngularJS 2.0新特性有哪些
2016/02/18 Javascript
Node.js配合node-http-proxy解决本地开发ajax跨域问题
2016/08/31 Javascript
js 打开新页面在屏幕中间的实现方法
2016/11/02 Javascript
简单三步实现报表页面集成天气
2016/12/15 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
jQuery实现动态添加、删除按钮及input输入框的方法
2017/04/27 jQuery
js简易版购物车功能
2017/06/17 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
浅析python参数的知识点
2018/12/10 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
Python常用库Numpy进行矩阵运算详解
2020/07/21 Python
详解移动端HTML5音频与视频问题及解决方案
2018/08/22 HTML / CSS
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
C#中的验证控件有几种
2014/03/08 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
制药工程专业应届生求职信
2013/09/24 职场文书
专升本个人自我评价
2013/12/22 职场文书
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
产假请假条
2014/04/10 职场文书
武当山导游词
2015/02/03 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python