[py]数据结构和算法-冒泡排序
数据结构和算法可以培养一个人的逻辑思维(推荐几本书)
逻辑思维培养
严蔚敏的数据结构(排序 查找 列表 堆栈 队列 树的简单部分)
大话数据结构
数据结构与算法分析 (豆瓣) 9.2分
算法 (豆瓣) 9.3分
算法导论 (豆瓣) 9.4分
等差数列
(首项+尾项) * (项数的一半)
复杂度: 评定算法之间对比的优劣
复杂度: 为了评定算法之间对比的优劣. 执行完算法所用的次数. 数组有n项,复杂度就是n*n
时间复杂度(执行完算法所需的时间,一般说的复杂度是指这个)
空间复杂度
冒泡算法
软件需要关注的算法(冒泡 快排) + 数据结构(list dict(hash表) 链表) + 网络(tcp三次握手 http常见状态 header) + 操作系统
冒泡排序
复杂度O(n^2)(一般指的时间复杂度, 空间复杂度指的是占用磁盘空间,一般我们不理睬)
稳定性: 冒泡是稳定的
实现效果: 第一次排序最大的归到最后一位, 第二次排序,次大的归到倒数第二位.
思路实现:

实现冒泡排序并优化
arr = [3, 5, 1, 32, 4]
for j in range(4):
for i in range(4):
if arr[i] < arr[i + 1]:
arr[i + 1], arr[i] = arr[i], arr[i + 1]
print arr
--
[32, 5, 4, 3, 1]
- 方法2
arr = [3, 5, 1, 32, 4]
j = 0
while j < len(arr) - 1:
for i in range(len(arr) - 1):
if arr[i] > arr[i + 1]:
arr[i + 1], arr[i] = arr[i], arr[i + 1]
j += 1
print arr
最终冒泡-经过优化
算法复杂度: O(n^2)
- 方法3-优化,比较规范
arr = [3,2,11,13,9]
l = len(arr) - 1 #为何要减去1呢,因为如果10个数字, 第九个数字和最后一个数字比是第九次, 为了优化,所以减去1
for i in range(l):
for j in range(l-i):
if arr[j] > arr[j+1]:
arr[j],arr[j+1] = arr[j+1],arr[j]
print(arr)
[py]数据结构和算法-冒泡排序的更多相关文章
- python数据结构与算法——冒泡排序
用两种方式实现,非递归和递归 直接上代码: 先是失败的递归方式,涉及到对象引用的问题: # Bad 想一想为啥不行? def bubblesort_rec_bad(A): if len(A)==1: ...
- java数据结构和算法------冒泡排序
package iYou.neugle.sort; public class Bubble_sort { public static void BubbleSort(double[] array) { ...
- Python 数据结构与算法——冒泡排序
#方法一:递归 def bubble(lst,i): if i==1: return lst for j in range(i-1): if lst[j] > lst[j+1]: lst[j], ...
- python数据结构与算法
最近忙着准备各种笔试的东西,主要看什么数据结构啊,算法啦,balahbalah啊,以前一直就没看过这些,就挑了本简单的<啊哈算法>入门,不过里面的数据结构和算法都是用C语言写的,而自己对p ...
- JavaScript 数据结构与算法之美 - 冒泡排序、插入排序、选择排序
1. 前言 算法为王. 想学好前端,先练好内功,只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScript ,旨在入门数据结构与算 ...
- 数据结构和算法(Golang实现)(19)排序算法-冒泡排序
冒泡排序 冒泡排序是大多数人学的第一种排序算法,在面试中,也是问的最多的一种,有时候还要求手写排序代码,因为比较简单. 冒泡排序属于交换类的排序算法. 一.算法介绍 现在有一堆乱序的数,比如:5 9 ...
- 数据结构与算法 Big O 备忘录与现实
不论今天的计算机技术变化,新技术的出现,所有都是来自数据结构与算法基础.我们需要温故而知新. 算法.架构.策略.机器学习之间的关系.在过往和技术人员交流时,很多人对算法和架构之间的关系感 ...
- php数据结构与算法
php面试题之二--数据结构和算法(高级部分) 二.数据结构和算法 1.使对象可以像数组一样进行foreach循环,要求属性必须是私有.(Iterator模式的PHP5实现,写一类实现Iterator ...
- 《数据结构与算法JavaScript描述》
<数据结构与算法JavaScript描述> 基本信息 作者: (美)Michael McMillan 译者: 王群锋 杜欢 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9 ...
随机推荐
- echarts - 使用echarts过程中遇到的问题(pending...)
1. 配合tab切换时,被display:none的元素init设置echarts失败 2018-11-09 18:09:35 现象描述:有一个tabs选项卡,每个切换项A.B中都有使用echart ...
- linux命令学习(3):ls命令
ls命令是linux下最常用的命令.ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单.如果ls指定其他目录,那么就会显示指定 目录里的文件及文件夹清单. 通过ls 命令不仅可以查看lin ...
- org.hibernate.HibernateException: connnection proxy not usable after transaction completion
今天yuan男神的程序报了这个错, getHibernateTemplate().saveOrUpdate(obj); getHibernateTemplate().flush(); getHiber ...
- PAT甲级1060 Are They Equal【模拟】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805413520719872 题意: 给定两个数,表示成0.xxxx ...
- [No000013F]WPF学习之X名称空间详解
X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的.用来引导XAML代码将XAML代码编译为CLR代码. 4.1X名称空间里面到底都有些什么? x名称空间映射的是:htt ...
- [No0000D3]bat当前路径currentPath.bat
@echo off echo 当前盘符:%~d0 echo 当前盘符和路径:%~dp0 echo 当前批处理全路径:%~f0 echo 当前盘符和路径的短文件名格式:%~sdp0 echo 当前CMD ...
- JavaScript:改变 HTML 图像
JavaScript:改变 HTML 图像 1.代码如下: <!DOCTYPE HTML> <html> <head> <meta charset=" ...
- hive优化之并行执行任务
1.与Oracle并行技术一样,hive在执行mapreduce作业时也可以执行并行查询.针对于不同业务场景SQL语句的执行情况,有些场景下SQL的执行是需要分割成几段去执行的,而且期间并不全是存在依 ...
- OC变量限定符和属性限定符
ARC当中变量的四种生命周期限定符 __strong __weak __unsafe_unretained __autoreleaseing __strong 是默认的限定符,无需显示引入,只要有强引 ...
- [linux] 对一个虚拟机的研究
今天拿到了一个vmware的虚拟机硬盘镜像,是其他公司的演示产品. 启动之后是带着ubuntu字样的grub.进入系统之后也不是shell,而是一个定制的命令行.所以如果想了解细节的话,只能单独挂硬盘 ...
