python小题目练习(五)
题目: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小题目练习(五)的更多相关文章
- python小题目练习(13)
题目:封装用户的上网行为 实现代码: """Author:mllContent:封装用户的上网行为Date:2020-01-19"""def ...
- python小题目练习(十二)
题目:如下图所示 代码展示: """Author:mllContent:春节集五福Date:2020-01-17"""import rand ...
- python小题目练习(四)
题目:JAVA和Python实现冒泡排序 实现代码: # Java实现对数组中的数字进行冒泡排序scoreList = [98, 87, 89, 90, 69, 50]temp = 0for i in ...
- python小题目汇总
1.编程计算两个日期之间的天数与周数 Python时间处理---dateutil模块: dateutil模块主要有两个函数,parser和rrule. 其中parser是根据字符串解析成datetim ...
- python小题目练习(一)
题目:输出1+2+3+4+5+--+100的总数,并打印出这行式子 代码展示:# 1.定义一个初识变量total,用于后面每次循环进行累加值 total = 0# 2.利用for循环遍历累加for i ...
- python小题目练习(十一)
题目:大乐透号码生成器 需求:使用Random模块模拟大乐透号码生成器,选号规则为:前区在1 ~ 35的范围内随机产生不重复 的5个号码,后区在1~ 12的范围内随机产生不重复的2个号码.效果如图8. ...
- python小题目练习(十)
题目:根据生日判断星座 需求:实现如下图所示结果 代码展示: """Author:mllContent:根据生日判断星座Date:2020-11-23"&quo ...
- python小题目练习(九)
题目:将美元转化为人民币 需求:实现如图所示需求 代码展示: """Author:mllContent:将美元转化为人民币Date:2020-11-23"&q ...
- python小题目练习(八)
题目:电视剧的收视率排行榜 需求:实现如下图所示需求 代码展示: """Author:mllContent:电视剧的收视率排行榜Date:2020-11-16" ...
随机推荐
- 【LeetCode】24.两两交换链表中的节点
24.两两交换链表中的节点 知识点:链表 题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点.你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换). 示例 示例 1 ...
- vue学习day01
什么是 vue 构建用户界面 用 vue 往 html 页面中填充数据,非常的方便 框架 框架是一套现成的解决方案,程序员只能遵守框架的规范,去编写自己的业务功能! 要学习 vue,就是在学习 vue ...
- windows批处理执行图片爬取脚本
背景 由于测试时需要上传一些图片,而自己保存的图片很少. 为了让测试数据看起来不那么重复,所以网上找了一个爬虫脚本,以下是源码: 1 import requests 2 import os 3 4 c ...
- Rancher无法登录 容器报错X509:certificate has expired or is not ye valid
在某天需要发布新版本的时候,发现rancher无法登录,于是到服务器上查看rancher日志,发现以下内容: 参考rancher文档中独立容器Rancher Server证书更新解决 1. 进入容器 ...
- Django/MySql数据库基本操作&ORM操作
数据库配置: #第一步在settings里面 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'dbna ...
- Linux命令篇 - sed 命令
sed sed - stream editor for filtering and transforming text: sed:利用脚本来处理.编辑文本文件: 格式:sed [OPTION]... ...
- CentOS 8配置本地yum源及DNF简介
CentOS 8更改了软件包的安装程序,取消了 yum 的配置方法,改而使用了dnf 作为安装程序.虽然改变了软件包的安装方式,但是 dnf 还是能兼容使用 yum 的配置文件和命令的使用方法. 小提 ...
- Docker将镜像文件发布到私服库
上一篇已经介绍如何将镜像发布到阿里云:https://www.cnblogs.com/sportsky/p/16246394.html 一.创建新镜像文件 1.创建容器并在容器内创建文件 在根目录下创 ...
- Web安全学习笔记 SQL注入上
Web安全学习笔记 SQL注入上 繁枝插云欣 --ICML8 SQL注入分类 SQL注入检测 一.注入分类 1.简介 SQL注入是一种代码注入技术用于攻击数据驱动的应用程序在应用程序中,如果没有做恰当 ...
- SSO 方案演进
背景介绍 随着业务与技术的发展,现今比以往任何时候都更需要单点登录 SSO 身份验证. 现在几乎每个网站都需要某种形式的身份验证才能访问其功能和内容. 随着网站和服务数量的增加,集中登录系统已成为一种 ...