交换排序 ——

冒泡排序

基本思想:从一端开始,逐个比较相邻的两个元素,发现倒序即交换。这里按从后往前(从下往上)逐个比较相邻元素。

数组冒泡排序过程

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)交换排序(气泡排序、快速排序),冒泡排序...相关推荐

  1. python 数组排序最少交换次数_数组排序 使得交换次数最少

    题目: 给定一个包含1-n的数列,我们通过交换任意两个元素给数列重新排序. 求最少需要多少次交换,能把数组排成按1-n递增的顺序,(数组中的元素互不重复). 比如 初始状态 5 4 3 2 1 .交换 ...

  2. python快速爬虫视频_“python怎么快速爬虫视频“python 爬网页视频教程

    用python怎样爬网页 # coding:utf8 import cookielib import urllib2 url = "http://blog.uouo123.com" ...

  3. python多进程编程实例_[python] Python多进程编程技术实例分析

    这篇文章主要介绍了Python多进程编程技术,包括了线程.队列.同步等概念及相关的技巧总结,需要的朋友可以参考下 本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧. ...

  4. python查看excel编码格式_[Python]实现处理读写xlsx xls excel文件格式(含中文处理方法)...

    最近有个需求要处理excel 格式的数据,数据量比较大.用传统的语言似乎不太好处理,于是改用python实现,这里记录一下实现过程. 首先,科普一下xlsx xls的excel文件区别是什么. xls ...

  5. python朋友圈刷屏_“Python太火了!请救救Java!”9万程序员刷屏朋友圈 !

    没想到有生之年,笔者能观察到"霸主陨落"的过程,继PLPY4月榜单官宣,Python躺赢,再度"夺"冠,实力甩下Java和C后,近期,Stack Overflo ...

  6. python 打包 小文件_[Python][小知识][NO.5] 使用 Pyinstaller 打包成.exe文件

    1.安装 pyinstaller 插件 cmd命令:pip install PyInstaller PS . o.o 不知道 easy_install 的百度吧. 2.pyinstaller 简介 他 ...

  7. python shell如何打开_“python shell怎么打开“python shell启动教程

    python shell怎么打开 1.简介:如何在python中运行shell(bash命令) 2.工具/原料:python库:os.py 3.方法:import os command = 'date ...

  8. python输出文本居中_#python PIL ImageDraw text 文本居中#

    python pip pil有什么东西 你所问的问题实是属1.先参考[教程]Python中的内置的和方的模块搞懂PIL是属于第三方Python模块2.再参考:[待完善][总结]Python安装第三方的 ...

  9. python水浒传名字次数_水浒传top20人物出现名字次数

    下面代码是使用python的分词和词云绘制的水浒top20人物出现的次数 from wordcloud import WordCloud import jieba import imageio mas ...

最新文章

  1. etcd 笔记(04)— etcd 网关与 gRPC 网关
  2. js过滤HTML标签以及空格
  3. Spring JDBC 框架,我的学习笔记
  4. 树莓派3B上部署运行.net core 2程序
  5. 使用log4j2打印mybatis的sql执行日志
  6. libjpeg(2)
  7. c语言 程序统计注释比例,C语言统计单词数量程序 超详解
  8. Web Hacking 101 中文版 十三、子域劫持
  9. 什么样的人最适合创业?
  10. Kubernetes 权限管理
  11. 敏捷开发之组织级经验分享
  12. onItemLongClick+onCreateContextMenu实现长按ListItem弹出不同菜单
  13. Winform使用FTP实现自动更新
  14. 安装好数据库 提示计算机无法启动,DBC数据库异常无法启动!!!HERODB配置错误怎么解决呢?...
  15. 两款扒站工具使用说明
  16. matlab 光谱共聚焦,光谱共焦技术介绍.PDF
  17. 信号与频谱之正弦信号和复信号
  18. ubuntu txt文件打开乱码怎么恢复正常
  19. android锁屏自动杀死,android 锁屏的防进程被杀
  20. STM32CUBEIDE 安装报错 error launching installer 解决办法

热门文章

  1. [bzoj] 1597 土地购买 || 斜率优化dp
  2. OpenFlow1.0协议解析
  3. 用计算机完成下表的视距测量计算公式,2012测量学计算题库及参考答案
  4. e会学计算机课后作业答案,大学语文网课答案e会学
  5. 广州大学数据库实验三——数据库系统设计综合实验
  6. 手机里android文件里哪些文件可删除,手机文件夹哪些可以删除?这4个删除它妥妥的...
  7. 与人斗其乐无穷,教你回答职场送命题!
  8. BZOJ 2039: [2009国家集训队]employ人员雇佣 最小割 二元组建图模型
  9. [渝粤教育] 中国传媒大学 计算机组成原理 参考 资料
  10. 【自动驾驶-感知-红绿灯】红绿灯识别知识点