python实现快速排序的示例(二分法思想)
作者:自由的姜戈 时间:2023-05-05 10:33:10
本文介绍了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
标签:python,二分法,快速
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
解决Keras 与 Tensorflow 版本之间的兼容性问题
2022-08-04 08:18:53
基于Opencv图像识别实现答题卡识别示例详解
2023-05-18 20:32:50
![](https://img.aspxhome.com/file/2023/8/82538_0s.jpg)
mysql 5.7.14 安装配置简单教程
2024-01-13 04:41:48
![](https://img.aspxhome.com/file/2023/0/81170_0s.png)
Python 的赋值,浅拷贝和深拷贝详解
2023-08-18 12:28:04
![](https://img.aspxhome.com/file/2023/2/131702_0s.png)
python中必要的名词解释
2023-10-17 23:30:32
Python通过队列来实现进程间通信的示例
2023-02-17 01:07:29
![](https://img.aspxhome.com/file/2023/7/127107_0s.gif)
python图像和办公文档处理总结
2021-03-08 19:24:02
![](https://img.aspxhome.com/file/2023/5/72875_0s.png)
css有趣而诡异的数组
2009-02-04 16:06:00
一道sql面试题附答案
2024-01-18 04:50:33
Python使用for实现无限循环的多种方式汇总
2023-04-30 15:15:11
Golang使用Gin框架实现HTTP上传文件过程介绍
2024-04-28 09:18:12
![](https://img.aspxhome.com/file/2023/1/134001_0s.png)
php小经验:解析preg_match与preg_match_all 函数
2023-10-31 08:55:23
Python 函数装饰器详解
2021-11-20 04:34:16
python pyaudio音频录制的实现
2022-03-13 08:44:31
![](https://img.aspxhome.com/file/2023/8/115758_0s.png)
PHP实现多文件上传的方法
2023-11-23 03:42:04
如何更改mysql命令下提示信息
2010-10-25 19:48:00
Window环境下Scrapy开发环境搭建
2023-08-24 01:14:58
![](https://img.aspxhome.com/file/2023/3/112153_0s.png)
Django中针对基于类的视图添加csrf_exempt实例代码
2021-05-22 03:08:19
phpMyAdmin安装配置方法
2009-09-09 20:15:00
Django验证码的生成与使用示例
2021-10-18 02:42:11
![](https://img.aspxhome.com/file/2023/4/124784_0s.png)