python冒泡算法_python_冒泡算法

什么是冒泡算法?

-- 像鱼吐泡泡一样,每次都是向上冒出一个水泡

如何逻辑整理?

-- 先拿第一个值和剩下的值,一一比较,必能找到最大的或者最小的

-- 比较过程中,第一个值小于剩下的某个值,交换位置,依次比较到最后,最大的一个肯定在最前面,找最大

-- 比较过程中,第一个值大于剩下的某个值,交换位置,依次比较到最后,最小的一个肯定在最前面,找最小

-- 每次找出最大的值或者最小的值,比较循环就减少一次,当只剩下一个元素时候,就结束了

从第几个值来看,按第几个值比较,忽略列表本身的索引值

# !/usr/bin/python3

def buble(fish):

'''冒泡算法'''

for j in range(1, len(fish)): # 从第一个开始根后面的比较

for i in range(len(fish)-j): # 每遍历找到最大或最小的放在第一位,然后再次循环剩下的元素

if fish[i] > fish[i+1]: # 如果第i个元素大i+1,互换位置,相当于找到最小的放最前面

# temp = fish[i+1]

# fish[i+1] = fish[i]

# fish[i] = temp

fish[i], fish[i+1] = fish[i+1], fish[i] # 位置互换

return fish

if __name__ == '__main__':

fish = [600, 4, 55, 42, 11, 5, 33, 6, 8, 20, 10, 66, 99, 77, 22]

result = buble(fish)

print(result)

利用列表本身的索引值进行比较,不更好更容易理解么?

# !/usr/bin/python3

def buble(fish):

'''冒泡算法'''

for j in range(len(fish)): # 从列表0索引开始,最后的元素就是一个,到最后一个元素,列表已经排好,无需自己比较自己

for i in range(j + 1, len(fish)): # j位置都是已经排好了,从j+1开始比较

if fish[j] < fish[i]: # 大于比较,交互位置,取最小的在前面

# temp = list_1[i+1]

# list_1[i+1] = list_1[i]

# list_1[i] = temp

fish[j], fish[i] = fish[i], fish[j] # 交互位置,相当于以上三句话

return fish

if __name__ == '__main__':

fish = [600, 4, 55, 42, 11, 5, 33, 6, 8, 20, 10, 66, 99, 77, 22]

result = buble(fish)

print(result)

记住一句话,比最大,交互位置,取最小的值,比最小,交互位置,取最大值

大于的时候,交互位置,实际上是把小的值,推到了列表最前面,

小于的时候,把大的值,推到最前面,这个才是冒泡算法最让人困惑的地方

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472815.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB的Java驱动使用整理 (转)

MongoDB Java Driver 简单操作 一、Java驱动一致性 MongoDB的Java驱动是线程安全的&#xff0c;对于一般的应用&#xff0c;只要一个Mongo实例即可&#xff0c;Mongo有个内置的连接池&#xff08;池大小默认为10个&#xff09;。 对于有大量写和读的环境中&#xff0c;为了确保…

Java 变量、数据类型

文章目录1. 变量、常量2. 数据类型1. 变量、常量 final 修饰常量 public class Variable {static final int YEAR 365;// 常量使用 final 修饰, 不可修改&#xff0c;类似C的 conststatic int day 0;// 成员变量public static void main(String[] args){System.out.println…

html背景图不显示_批量显示多张有序排列的图标,使用精灵图CSS Sprites这种办法...

让你显示一个天气图标你会怎么显示呢&#xff1f;让你做一个简单的动图你会怎么采用什么方式呢&#xff1f;让你输出一个长期固定的图标列表你会怎么编写代码呢&#xff1f;如果不管性能&#xff0c;不用css&#xff0c;不用js&#xff0c;可能你会这么写html&#xff1a;<类…

mysql堵塞等级_MySQL 事务隔离级别

前言简单来说&#xff0c;数据库事务就是保证一组数据操作要么全部成功&#xff0c;要么全部失败。在 MySQL 中&#xff0c;事务是在引擎层实现的。原生的 MyISAM 引擎不支持事务&#xff0c;也是为什么 InnoDB 会取代它的重要原因之一。隔离性与隔离级别当数据库上有多个事务同…

水晶报表取消输入密码最后测试结果

哈哈&#xff0c;找了很多资料终于解决了。 //添加引用 using CrystalDecisions.Shared ;//负责解释TableLogOnInfo类 using CrystalDecisions.CrystalReports .Engine ;//负责解释ReportDocument类private void Page_Load(object sender, System.EventArgs e) //然后在水晶报表…

Java 运算符、表达式、语句

文章目录1. 运算符2. 表达式3. 语句1. 运算符 赋值运算 , -, *, /, % 算术运算 , -, !, ~ 一元运算 关系运算 >, <, >, <, , ! 返回布尔 递增&#xff0c;递减--&#xff0c;支持&#xff08;float&#xff0c;double&#xff09;1, -1 逻辑运算 &&…

安装mysql没有提示设置密码_18.04安装mysql没有提示输入密码

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼MySQL 5.7不再弹出root密码设置sudo vi /etc/mysql/debian.cnf显示&#xff1a;# Automatically generated for Debian scripts. DO NOT TOUCH![client]host localhostuser debian-sys-maintpassword fPw**********22socket /v…

arrays中copyof复制两个数组_Java的数组初识和拷贝用法

方法重载&#xff1a;方法名称相同&#xff0c;参数列表不同。不能有两个名字相同、参数类型相同&#xff0c;返回值不同的方法。在进行方法重载时&#xff0c;方法的返回值一定相同&#xff01;&#xff01;&#xff01;方法递归特点&#xff1a;1.必须有结束条件2.每次递归处…

你不知道的 字符集和编码(编码字符集与字符集编码)

我的上篇文章&#xff0c;有朋友提出字符集和编码的区别&#xff0c;我在此立文和大家讨论下 常说的字符集和编码区别&#xff0c;其实就是编码字符集和字符集编码的区别&#xff0c;其实&#xff0c;单单如果只是说字符集&#xff0c;没有任何编码的概念的话&#xff0c;那么字…

Java 数组及多维数组

注意一点&#xff0c;数组每行可以不等长可以两种写法&#xff0c;直接枚举初始化&#xff0c;或者new type [len1][len2]... import java.util.Arrays;public class Myarray {public static void main(String[] args){// 一维数组声明int arr1 [] new int[3];int [] arr2 {…

迷宫搜索问题最短路_【算法常用模板】总结(更新中)

搜索类图类排序类并查集数学类位运算Part1 搜索类bfs 求迷宫问题最短路径(未验证)#include#includeusing namespace std;//用于遍历的结构 (可以添加题目所要求的信息)typedef struct Node{int x,y;int step;}NODE;const int NUM 100; //地图最大范围&#xff0c;根据要求具体…

hook 监控文件 c++_技术分享 | Linux 入侵检测中的进程创建监控

作者简介&#xff1a;张博&#xff0c;网易高级信息安全工程师。0x00 简介在入侵检测的过程中&#xff0c;进程创建监控是必不可少的一点&#xff0c;因为攻击者的绝大多数攻击行为都是以进程的方式呈现&#xff0c;所以及时获取到新进程创建的信息能帮助我们快速地定位攻击行为…

caffe模型文件解析_Caffe ImageData神经网络基本示例无法解析模型文件

我正在尝试使用我使用caffe库从CSV文件准备的 **_图像数据_** 构建神经网络的最小示例。I am trying to build a minimal example of a neural network with **_IMAGE DATA_** that I have prepared from a CSV file using the caffe libraries.我的原始文本如下&#xff1a;\[…

付忠庆的练习小笔记-Codeforces #277 Div2 C

原题链接 http://codeforces.com/contest/486/problem/C 这个C题显然更水一些 步数可以分为两种 上下一种 左右一种 总步数最小 上下最小左右最小 先讨论上下最小 就是从两个方向去由字母1到字母2 min(dis(A,B),26-dis(A,B)); 然后讨论左右最小 pos是起始指针的位置 1-统一在…

Java 类的封装、继承、多态

// 封装、继承、多态 class Person1{String name;int age;private int height;// 私有 封装public Person1(String name, int age){this.name name;this.age age;}public void talk(){System.out.println("This is father class talk() !");}public void setHeight…

hive 创建表_2min快速了解,Hive内部表和外部表

在了解内部表和外部表区别前&#xff0c;我们需要先了解一下Hive架构 &#xff1a;大家可以简单看一下这个架构图&#xff0c;我介绍其中要点&#xff1a;Hive的数据分为两种&#xff0c;一种为普通数据&#xff0c;一种为元数据。元数据存储着表的基本信息&#xff0c;增删改查…

C#微信公众号开发系列教程二(新手接入指南)

此系列前面已经更新了两篇博文了&#xff0c;都是微信开发的前期准备工作&#xff0c;现在切入正题&#xff0c;本篇讲解新手接入的步骤与方法&#xff0c;大神可直接跳过&#xff0c;也欢迎大神吐槽。 微信公众号开发系列教程一&#xff08;调试环境部署&#xff09; 微信公众…

oracle增加字段为主键自增_在 Oracle 中设置自增列

如果你经常使用 MySQL&#xff0c;你肯定对 AUTO_INCREMENT 非常熟悉&#xff0c;因为经常要用到它。一、什么是自增列 &#xff1f;自增列是数据库中值随插入的每个行自动增加的一列。它最常用于主键或 ID 字段&#xff0c;这样每次增加一行时&#xff0c;不用指该字段的值&am…

Java 抽象类、接口

abstract class 抽象类定义规则如下: (1) 抽象类和抽象方法都必须用 abstract 关键字来修饰。 (2) 抽象类不能被直接实例化&#xff0c;也就是不能用new关键字去产生对象。 (3) 抽象方法只需声明&#xff0c;而不需实现。 (4) 含有抽象方法的类必须被声明为抽象类&#xff0c…

fastdfs windows部署_Go在windows下编译Linux可执行文件

欢迎关注我的头条号&#xff1a;Wooola&#xff0c;专注于Java、Golang、微服务架构&#xff0c;致力于每天分享原创文章、快乐编码和开源技术。前言最近楼主做了一个滑块验证码登录功能&#xff0c;但有个问题&#xff0c;悲观估计一天大约会产生两百多G临时图片放在fastdfs文…