python实现快速排序的示例(二分法思想)
作者:自由的姜戈 发布时间:2023-05-05 10:33:10
标签:python,二分法,快速
本文介绍了python实现快速排序的示例(二分法思想),分享给大家,具体如下:
实现思路
将所需要的数字存入一个列表中
1.首先,设置将最左侧的那个数设置为基准数,在列表中索引为0
2.然后设置两个移动位(用于比较),分别为最左边和最右边
3.然后最右边那位向左移寻找比基准数小的那一位,最右边那位则从左向右寻找比基准数大的那一位
4.再后,将找到的两位对应的数字替换,继续执行3,直到两个移动位相遇,把基准为替换到相遇的那一位
5.最后,将列表以基准数那一位一分为二切开,左边和右边部分继续执行上述1-4步,直到没有比较数为止(也就是一个数),排序完成。
看下图你就明白了:
实现代码
# 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()
快速排序比较冒泡排序效率要高得多~
来源:http://www.cnblogs.com/freedjango/p/8546934.html


猜你喜欢
- 读取excel数据需要用到xlrd模块,在命令行运行下面命令进行安装pip install xlrd表格内容大致如下,有若干sheet,每个
- 导读我们在使用selenium打开google浏览器的时候,默认打开的是一个新的浏览器窗口,而且里面不带有任何的浏览器缓存信息。当我们想要爬
- 初学python,看来零零碎碎的格式化文本的方法,总结一下python中格式化文本的方法。使用不当的地欢迎指出谢谢。1、首先看使用%格式化文
- DataSet是tensorflow 1.3版本推出的一个high-level的api,在1.3版本还只是处于测试阶段,1.4版本已经正式推
- 网站内容的入口很大一部分都是依赖于导航系统,而网站的入口很大一部分依赖于搜索系统,这也在一定意义上证明了导航与搜索之间的重叠性。搜索系统可以
- 听说pytorch使用比TensorFlow简单,加之pytorch现已支持windows,所以今天装了pytorch玩玩,第一件事还是写了
- SQL一些语句执行后出现异常不会回滚MySQL回滚问题SQL中会隐式提交的操作:1、DDL语句:ALTER DATABASE、ALTER E
- 代码中经常会有变量是否为None的判断,有三种主要的写法:第一种是`if x is None`;第二种是 `if not x:`;第三种是`
- 前言终于下定决心学习Python了。既然从头开始,就需要认认真真。首先需要说的是,我是初学Python,这篇文章只是用于展示global和n
- 效果图:实现代码如下view<canvas id="radar-canvas" class="radar
- 今天也碰到了el表达式无法解析的事情,于是在网上查询了下,大多说是因为web.xml中声明的版本问题于是收集了如下版本:web-app_2_
- 我想大多写web的朋友应该和我一样,正则是不可少的,可是每次到用时去百度一下,也麻烦,存在电脑里也得找半天~换了电脑还是得靠google了~
- 改变图像中物体对象(像素)之间的空间关系。平移# 定义平移矩阵,需要是numpy的float32类型# x轴平移50,y轴平移80, 2*3
- 一、QQ邮箱SSL发送获取qq授权码ssl发送方式不是使用邮箱密码,而是需要授权码,具体步骤如下:登录发送人qq邮箱>>设置&g
- 概述Go 语言中的 new 和 make 一直是新手比较容易混淆的东西,咋一看很相似。不过解释两者之间的不同也非常容易。new 的主要特性首
- f-string,亦称为格式化字符串常量(formatted string literals),是Python3.6新引入的一种字符串格式化
- 直接看代码using System;using System.Configuration;using MySql.Data.MySqlCli
- 本文实例讲述了Python实现获取命令行输出结果的方法。分享给大家供大家参考,具体如下:Python获取命令行输出结果,并对结果进行过滤找到
- 本文实例讲述了python中管道用法。分享给大家供大家参考。具体如下:#!coding=utf-8import multiprocessin
- 什么是mtcnn和facenet1、mtcnnMTCNN,英文全称是Multi-task convolutional neural netw