题目:Python实现快速排序

代码实现:

"""
Author:mll
Content:Python实现快速排序
Date:2020-11-05
"""
# arr[] --> 排序数组
# low --> 起始索引
# high --> 结束索引

# 实现快速排序函数
def partition(arr, low, high):
i = (low - 1) # 最小元素索引
pivot = arr[high] # 基准数,用于循环遍历进行比较的数,一般取最后一个数

for j in range(low, high):
# 通过循环数组arr[]来一个个跟基准数对比,若小于基准数,则符合两数交换的规则,每找到一个符合交换规则的数,则跟数组的第1 2……一直往后交换
# 可以理解为我用j下标进行循环遍历数组arr[],i也是表示数据arr[]下标,就是我用两个下标,一个来循环遍历找数据,一个是来取数据
# 如果循环遍历找到符合交换规则的数,那就执行i=i+1,也就是找到一个符合交换规则的得数,就跟第一个交换,再找一个就跟第二个交换,以此类推
if arr[j] <= pivot:
i = i + 1
arr[i], arr[j] = arr[j], arr[i]
# 上面那个循环是不涉及最后一个数的,这一步是把最后一个数进行交换。
# 例如极端的情况列表中前面的数都比最后一个数大,[10,9 8,7,6,5],此时循环对比发现都比基准数大,不需要交换,此时发现最后一个数最小,那么就与第一个数交换
arr[i + 1], arr[high] = arr[high], arr[i + 1]
return (i + 1)

# 快速排序函数
def quickSort(arr, low, high):
if low < high:
pi = partition(arr, low, high)
quickSort(arr, low, pi - 1)
quickSort(arr, pi + 1, high)

arr = [10, 7, 2, 9, 1, 5]
n = len(arr)
quickSort(arr, 0, n - 1)
print("排序后的数组:", arr)

总结:可以先了解快排的逻辑,然后用debug来一步步看结果,不难理解的

python小题目练习(五)的更多相关文章

  1. python小题目练习(13)

    题目:封装用户的上网行为 实现代码: """Author:mllContent:封装用户的上网行为Date:2020-01-19"""def ...

  2. python小题目练习(十二)

    题目:如下图所示 代码展示: """Author:mllContent:春节集五福Date:2020-01-17"""import rand ...

  3. python小题目练习(四)

    题目:JAVA和Python实现冒泡排序 实现代码: # Java实现对数组中的数字进行冒泡排序scoreList = [98, 87, 89, 90, 69, 50]temp = 0for i in ...

  4. python小题目汇总

    1.编程计算两个日期之间的天数与周数 Python时间处理---dateutil模块: dateutil模块主要有两个函数,parser和rrule. 其中parser是根据字符串解析成datetim ...

  5. python小题目练习(一)

    题目:输出1+2+3+4+5+--+100的总数,并打印出这行式子 代码展示:# 1.定义一个初识变量total,用于后面每次循环进行累加值 total = 0# 2.利用for循环遍历累加for i ...

  6. python小题目练习(十一)

    题目:大乐透号码生成器 需求:使用Random模块模拟大乐透号码生成器,选号规则为:前区在1 ~ 35的范围内随机产生不重复 的5个号码,后区在1~ 12的范围内随机产生不重复的2个号码.效果如图8. ...

  7. python小题目练习(十)

    题目:根据生日判断星座 需求:实现如下图所示结果 代码展示: """Author:mllContent:根据生日判断星座Date:2020-11-23"&quo ...

  8. python小题目练习(九)

    题目:将美元转化为人民币 需求:实现如图所示需求  代码展示: """Author:mllContent:将美元转化为人民币Date:2020-11-23"&q ...

  9. python小题目练习(八)

    题目:电视剧的收视率排行榜 需求:实现如下图所示需求  代码展示: """Author:mllContent:电视剧的收视率排行榜Date:2020-11-16" ...

随机推荐

  1. python 包之 redis 数据库操作教程

    一.安装 redis 是一个 Key-Value 数据库 Value 支持 string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希类型)等类型 pip inst ...

  2. IDEA小技巧:Debug时如何优雅地制造异常?

    抛异常相信大家都会吧?只需要这样就可以了: throw new RuntimeException("didispace.com"); 但是,在开发过程中有一些情况,我们需要测试程序 ...

  3. Linux(ubuntu)二进制安装mysql8.0

    mysql官方网站下载地址:https://dev.mysql.com/downloads/mysql/ 1.创建mysql运行用户和组 groupadd -g 1001 mysql useradd ...

  4. 双列集合Map接口 & Collections工具类

    HashMap 常用方法 遍历方式 iterator迭代器  ITIT HashTable 继承字典 Hashtable--Properties 文件读写 总结 Collections工具类

  5. for & while &迭代器

    for (int i = 0; i < 10; i++) { System.out.println("hello"); } int a=100; for (;a<110 ...

  6. 一次IOS通知推送问题排查全过程

    原创:打码日记(微信公众号ID:codelogs),欢迎分享,转载请保留出处. 发现问题 在上周一个将要下班的夜晚,测试突然和我打招呼,说IOS推送的修复更新上线后存在问题,后台报错. 连忙跑到测试那 ...

  7. 真香!Windows 可直接运行 Linux 了

    点击关注上方"开源Linux", 后台回复"读书",有我为您特别筛选书籍资料~ 之前了解过一些适用于Linux的Windows子系统,最近又听人提起,于是在自己 ...

  8. linux网络配置,查看IP地址

    linux等等学习参考博客:https://www.cnblogs.com/pyyu/p/9276851.html 1.在安装好的linux上面输入cd /etc/sysconfig/network- ...

  9. python入门基础知识二(字符串的常用操作方法)

    下标/索引: a = "I'm interested in Python." print(a[4]) i # 英文的字符串每一个下标/索引对应一个字母(含标点) a = '我喜欢p ...

  10. js--promise、async 和 await 相关知识总结

    前言 promise 是前端开发人员必须掌握的知识点,本文来总结一下相关学习笔记. 正文 1.什么是prommise,promise 解决了什么问题 a.promise 是什么 Promise 是承诺 ...