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 相关文章推荐
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 Python
python中input()与raw_input()的区别分析
Feb 27 Python
Python的Twisted框架上手前所必须了解的异步编程思想
May 25 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
Python实现的建造者模式示例
Aug 06 Python
Python单向链表和双向链表原理与用法实例详解
Aug 31 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
运用Python的webbrowser实现定时打开特定网页
Feb 21 Python
Python2与Python3的区别实例分析
Apr 11 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Pandas将列表(List)转换为数据框(Dataframe)
Apr 24 Python
Django执行源生mysql语句实现过程解析
Nov 12 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 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
Web程序工作原理详解
2014/12/25 PHP
PHP载入图像imagecreatefrom_gif_jpeg_png系列函数用法分析
2016/11/14 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
理解JavaScript中的事件
2006/09/23 Javascript
通用JS事件写法实现代码
2009/01/07 Javascript
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
40个有创意的jQuery图片、内容滑动及弹出插件收藏集之一
2011/12/31 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
javascript实例分享---具有立体效果的图片特效
2014/06/08 Javascript
jquery实现简易的移动端验证表单
2015/11/08 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
mpvue小程序仿qq左滑置顶删除组件
2018/08/03 Javascript
JS+HTML5 canvas绘制验证码示例
2018/12/05 Javascript
js逆向解密之网络爬虫
2019/05/30 Javascript
layui添加动态菜单与选项卡
2019/07/26 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
2020/08/12 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
Python排序算法实例代码
2017/08/10 Python
Python tkinter布局与按钮间距设置方式
2020/03/04 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
英国最大的在线蜡烛商店:Candles Direct
2019/03/26 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
豪华复古化妆:Besame Cosmetics
2019/09/06 全球购物
煤矿开采专业求职信
2014/07/08 职场文书
开展批评与自我批评心得体会
2014/10/17 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
爱国主义教育基地观后感
2015/06/18 职场文书
goland 恢复已更改文件的操作
2021/04/28 Golang
Python字符串常规操作小结
2022/04/03 Python