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定时器使用示例分享
Feb 16 Python
常见的在Python中实现单例模式的三种方法
Apr 08 Python
python爬虫爬取网页表格数据
Mar 07 Python
使用python爬取B站千万级数据
Jun 08 Python
python中正则表达式 re.findall 用法
Oct 23 Python
Python读取mat文件,并保存为pickle格式的方法
Oct 23 Python
详解python3中用HTMLTestRunner.py报ImportError: No module named 'StringIO'如何解决
Aug 27 Python
python图形开发GUI库wxpython使用方法详解
Feb 14 Python
Python通过两个dataframe用for循环求笛卡尔积
Apr 29 Python
一文轻松掌握python语言命名规范规则
Jun 18 Python
python源码剖析之PyObject详解
May 18 Python
Python时间操作之pytz模块使用详解
Jun 14 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的Yii框架中扩展的安装与使用
2016/04/01 PHP
PHP实现Google plus的好友拖拽分组效果
2016/10/21 PHP
jquery tools系列 expose 学习
2009/09/06 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
js修改原型的属性使用介绍
2014/01/26 Javascript
js定时调用方法成功后并停止调用示例
2014/04/08 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
JavaScript中的方法重载实例
2015/03/16 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
基于datepicker定义自己的angular时间组件的示例
2018/03/14 Javascript
Vue项目中如何引入icon图标
2018/03/28 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
Python学习之asyncore模块用法实例教程
2014/09/29 Python
Python中几种操作字符串的方法的介绍
2015/04/09 Python
Python中方法链的使用方法
2016/02/23 Python
scrapy爬虫实例分享
2017/12/28 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
Python多重继承的方法解析执行顺序实例分析
2018/05/26 Python
python批量下载网站马拉松照片的完整步骤
2018/12/05 Python
Pytorch中index_select() 函数的实现理解
2019/11/19 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
Python通过Tesseract库实现文字识别
2020/03/05 Python
Tensorflow实现将标签变为one-hot形式
2020/05/22 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
HTML5实现的震撼3D焦点图动画的示例代码
2019/09/26 HTML / CSS
彪马荷兰官网:PUMA荷兰
2019/05/08 全球购物
德国最新街头服饰网上商店:BODYCHECK
2019/09/15 全球购物
岗位标兵事迹材料
2014/05/17 职场文书
大专生自荐书范文
2014/06/22 职场文书
1000字打架检讨书
2014/11/03 职场文书
Python制作一个随机抽奖小工具的实现
2021/07/07 Python