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使用PIL缩放网络图片并保存的方法
Apr 24 Python
使用python3.5仿微软记事本notepad
Jun 15 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
Python中支持向量机SVM的使用方法详解
Dec 26 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
python3.6+django2.0开发一套学员管理系统
Mar 03 Python
Centos7 Python3下安装scrapy的详细步骤
Mar 15 Python
Python 3.8新特征之asyncio REPL
May 28 Python
用Python配平化学方程式的方法
Jul 20 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
Dec 18 Python
python pandas利用fillna方法实现部分自动填充功能
Mar 16 Python
python入门学习关于for else的特殊特性讲解
Nov 20 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
CI框架中zip类应用示例
2014/06/17 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
如何离线执行php任务
2017/02/21 PHP
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
Vue.js仿Metronic高级表格(二)数据渲染
2017/04/19 Javascript
JS实现队列的先进先出功能示例
2017/05/10 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
vue中component组件的props使用详解
2017/09/04 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
ES6中let 和 const 的新特性
2018/09/03 Javascript
ES7之Async/await的使用详解
2019/03/28 Javascript
运用js实现图层拖拽的功能
2019/05/24 Javascript
小程序表单认证布局及验证详解
2020/06/19 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
Python的iOS自动化打包实例代码
2018/11/22 Python
在Python3 numpy中mean和average的区别详解
2019/08/24 Python
基于Django统计博客文章阅读量
2019/10/29 Python
python滑块验证码的破解实现
2019/11/10 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
2020/02/28 Python
python打包生成so文件的实现
2020/10/30 Python
利用CSS3的checked伪类实现OL的隐藏显示的方法
2010/12/18 HTML / CSS
南非领先的在线旅行社:Travelstart南非
2016/09/04 全球购物
Shop Apotheke瑞士:您的健康与美容网上商店
2019/10/09 全球购物
Scotch Porter官方网站:男士美容产品
2020/08/31 全球购物
警校毕业生自我评价
2014/04/06 职场文书
优秀少先队大队辅导员事迹材料
2014/05/04 职场文书
爱国主义电影观后感
2015/06/18 职场文书
增值税发票丢失证明
2015/06/19 职场文书
2015年车间管理工作总结
2015/07/23 职场文书