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
0
投稿
猜你喜欢
- 一下文件执行将产生乱码,切.log文件显示问好,打不开import loggingdef shop_logging(name):  
- 应用场景这段代码可以用于修改Excel文件的元数据,例如作者、主题、描述等,通过使用Python和Openpyxl模块,以及wxPython
- 分享给大家一篇文章,教你怎样用Python画了一棵圣诞树,快来学习。如何用Python画一个圣诞树呢?最简单:height = 5stars
- 前言超参调优是“模型调优”(Model Tuning)阶段最主要的工作,是直接影响模型最终效果的关键
- 1.定义在某些情况下,一个类的对象是有限且固定的,比如季节类,它只有 4 个对象;再比如行星类,目前只有 8 个对象。这种实例有限且固定的类
- 目录前言一、常用命令二、嗅探数据包三、构造数据包四、各个协议用法五、发包,收包六、SYN半开式扫描七、数据包序列化,反序列化八、数据包与字符
- 多线程-共享全局变量#coding=utf-8from threading import Threadimport timeg_num =
- 本博客演示使用OpenCV和PIL读取和显示图像的差异。首先来看一下原始的bgr图像 src.jpg1. 使用cv2读取src.jpg并转为
- 判断缩进代替大括号。冒号(:)后换号缩进。iftest=100if test>50: print('OK')print
- package 机制package是模块的集合,每一个Package的根目录下面都应当有一个__init__.py 文件。当解释器发现目录下
- /** * 对数据进行编码转换 * @param array/string $data  
- 1 sample(序列a,n)sample(序列a,n)功能:从序列a中随机抽取n个元素,并将n个元素生以list形式返回。例:from r
- 为了熟悉Python基础语法,学习了一个经典的案例:飞机大战,最后实现效果如下:实现步骤:①下载64位对应python版本的pygame:p
- 上一篇:微软建议的ASP性能优化28条守则(6) 技巧 20:避免在循环语句中使用字符串串联 许多人在循环语句中建立一个字符串,如下所示:
- 相关性实现统计和数据科学通常关注数据集的两个或多个变量(或特征)之间的关系。数据集中的每个数据点都是一个观察值,特征是这些观察值的属性或属性
- 本文实例讲述了Python函数的返回值、匿名函数lambda、filter函数、map函数、reduce函数用法。分享给大家供大家参考,具体
- <?php //作者:遥远的期待 //QQ:15624575 //算法分析:1、必须是整数序列、2、如果整个序列不全是负数,最大子序列
- 关于投票系统怎么样怎么样的引言就不多说,这不是毕业设计,主要说一下使用php实现投票系统,与其他普通系统一样,分为两部分,一个是管理员部分,
- Python果然是一款非常简明的语言,做东西非常流畅,今天又尝试了一下用Serial做了一个控制台的串口通讯,我用的下位机是STM32F10
- 本文实例讲述了python处理csv数据的方法。分享给大家供大家参考。具体如下:Python代码:#coding=utf-8__author