python 冒泡排序 交换次数_(Python)交换排序(气泡排序、快速排序),冒泡排序...
交换排序 ——
冒泡排序
基本思想:从一端开始,逐个比较相邻的两个元素,发现倒序即交换。这里按从后往前(从下往上)逐个比较相邻元素。
数组冒泡排序过程
def bubbleSort(arr):
n = len(arr)
# 遍历所有数组元素
for i in range(n):
# Last i elements are already in place
for j in range(0, n - i - 1):
# 与相邻元素比较,不对就交换
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
if __name__ == '__main__':
arr = [64, 34, 25, 12, 22, 11, 90]
bubbleSort(arr)
print("排序后的数组:")
for i in range(len(arr)):
print("%d" % arr[i]),
时间复杂度为O(
)
交换排序 ——
快速排序
基本思想:
将数据划分为两部分,左边的所有元素都小于右边的所有元素;然后,对左右两边进行快速排序。
划分方法:
选定一个参考点(
中间元素
),所有元素与之相比较,小的放左边,大的放右边。
具体划分方法:
选择第一个元素作为中间元素。
划分:
(1)先保存该元素的值到其它位置,腾出其空间。
(2)从后往前搜索一个比中间数小的元素,并将其放置到前面的这个空位上。
(3)从前往后搜索一个比中间数大的元素,并将其放置到后面的这个位置上。
重复(2),(3),直到两边搜索的空位重合
,
此时将中间元素放在该空位中。
数组快速排序过程演示
快速排序的应用
将一组数奇偶分开
不利用全部排序而求出数组中第10
个元素
def partition(L, left, right):
pivotkey = L[left]
while left < right:
# 从右到左,数出小于 pivotkey 的,放左边
while left < right and L[right] >= pivotkey:
right -= 1
L[left] = L[right]
# 从左到右,数出大于 pivotkey 的,放右边。
while left < right and L[left] <= pivotkey:
left += 1
L[right] = L[left]
# 最后剩下的那个空位置放 pivotkey
L[left] = pivotkey
return left
# arr[] --> 排序数组
# low --> 起始索引
# high --> 结束索引
# 快速排序函数
def quickSort(arr, low, high):
if low < high:
pi = partition(arr, low, high)
quickSort(arr, low, pi - 1)
quickSort(arr, pi + 1, high)
if __name__ == '__main__':
arr = [10, 7, 8, 9, 13, 5]
n = len(arr)
quickSort(arr, 0, n - 1)
print("排序后的数组:")
for i in range(n):
print("%d" % arr[i])
python 冒泡排序 交换次数_(Python)交换排序(气泡排序、快速排序),冒泡排序...相关推荐
- python 数组排序最少交换次数_数组排序 使得交换次数最少
题目: 给定一个包含1-n的数列,我们通过交换任意两个元素给数列重新排序. 求最少需要多少次交换,能把数组排成按1-n递增的顺序,(数组中的元素互不重复). 比如 初始状态 5 4 3 2 1 .交换 ...
- python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程
用python怎样爬网页 # coding:utf8 import cookielib import urllib2 url = "http://blog.uouo123.com" ...
- python多进程编程实例_[python] Python多进程编程技术实例分析
这篇文章主要介绍了Python多进程编程技术,包括了线程.队列.同步等概念及相关的技巧总结,需要的朋友可以参考下 本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧. ...
- python查看excel编码格式_[Python]实现处理读写xlsx xls excel文件格式(含中文处理方法)...
最近有个需求要处理excel 格式的数据,数据量比较大.用传统的语言似乎不太好处理,于是改用python实现,这里记录一下实现过程. 首先,科普一下xlsx xls的excel文件区别是什么. xls ...
- python朋友圈刷屏_“Python太火了!请救救Java!”9万程序员刷屏朋友圈 !
没想到有生之年,笔者能观察到"霸主陨落"的过程,继PLPY4月榜单官宣,Python躺赢,再度"夺"冠,实力甩下Java和C后,近期,Stack Overflo ...
- python 打包 小文件_[Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件
1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...
- python shell如何打开_“python shell怎么打开“python shell启动教程
python shell怎么打开 1.简介:如何在python中运行shell(bash命令) 2.工具/原料:python库:os.py 3.方法:import os command = 'date ...
- python输出文本居中_#python PIL ImageDraw text 文本居中#
python pip pil有什么东西 你所问的问题实是属1.先参考[教程]Python中的内置的和方的模块搞懂PIL是属于第三方Python模块2.再参考:[待完善][总结]Python安装第三方的 ...
- python水浒传名字次数_水浒传top20人物出现名字次数
下面代码是使用python的分词和词云绘制的水浒top20人物出现的次数 from wordcloud import WordCloud import jieba import imageio mas ...
最新文章
- etcd 笔记(04)— etcd 网关与 gRPC 网关
- js过滤HTML标签以及空格
- Spring JDBC 框架,我的学习笔记
- 树莓派3B上部署运行.net core 2程序
- 使用log4j2打印mybatis的sql执行日志
- libjpeg(2)
- c语言 程序统计注释比例,C语言统计单词数量程序 超详解
- Web Hacking 101 中文版 十三、子域劫持
- 什么样的人最适合创业?
- Kubernetes 权限管理
- 敏捷开发之组织级经验分享
- onItemLongClick+onCreateContextMenu实现长按ListItem弹出不同菜单
- Winform使用FTP实现自动更新
- 安装好数据库 提示计算机无法启动,DBC数据库异常无法启动!!!HERODB配置错误怎么解决呢?...
- 两款扒站工具使用说明
- matlab 光谱共聚焦,光谱共焦技术介绍.PDF
- 信号与频谱之正弦信号和复信号
- ubuntu txt文件打开乱码怎么恢复正常
- android锁屏自动杀死,android 锁屏的防进程被杀
- STM32CUBEIDE 安装报错 error launching installer 解决办法
热门文章
- [bzoj] 1597 土地购买 || 斜率优化dp
- OpenFlow1.0协议解析
- 用计算机完成下表的视距测量计算公式,2012测量学计算题库及参考答案
- e会学计算机课后作业答案,大学语文网课答案e会学
- 广州大学数据库实验三——数据库系统设计综合实验
- 手机里android文件里哪些文件可删除,手机文件夹哪些可以删除?这4个删除它妥妥的...
- 与人斗其乐无穷,教你回答职场送命题!
- BZOJ 2039: [2009国家集训队]employ人员雇佣 最小割 二元组建图模型
- [渝粤教育] 中国传媒大学 计算机组成原理 参考 资料
- 【自动驾驶-感知-红绿灯】红绿灯识别知识点