深入浅出的排序算法-冒泡排序

前言

大家好,给大家带来冒泡排序算法,希望你们喜欢

冒泡排序

为什么这个排序要叫冒泡呢?为什么不叫其他名词呢?其实这个取名是根据排序算法的基本思路命名的,见名知意,冒泡排序,就是想泡泡在水里一样,在水里大的泡泡先浮出水面,就是大的先排出来,最小的最慢排出。

冒泡排序,是对排序的各个元素从头到尾依次进行相邻的大小比较,比如你是队长,在你的面前有一排人,你要将其进行排序,依次按照从小到大排序。

怎么理解最大的值被排除,你是队长,你对面前的一群人看不惯,进行排序,从左到右开始,第一个和第二个进行比较,大的那个就被挑出来,与第三个进行比较,接下来就是依次按照这个方法比较,就能把那个最大的值,最高的给挑出来不是,这就是第一轮的比较。

接下来,最大的就不用跟他比较了,上面所述,在排序时,你面前的人,是不能乱动的,一旦比较哪个大,两者就换位,如果第一比第二个小,就是第二个大时,两者不用换位,第二个就与第三个进行比较。

依照这个方法,两两比较,大的都被排到了最后,那么一旦排完,是不是都依照从小到大,(从低到高)的顺序在你面前排好了。

  • 代码示例

我们用索引下标来解释

//第一轮  
for(int index=0;index < arr.length-1; index++){  
//相邻两个比较  if(arr[index] > arr[index+1]){  int temp = arr[index];  arr[index] = arr[index+1];  arr[index+1] = temp;  }  
}  print(arr);  for(int index=0;index < arr.length-2;index++){  
//这里arr.length-2,为什么比上一次多减了1呢?  
//因为第一轮,把最大的排出来了,就不用比较了,少了一个人  if(arr[index] > arr[index+1]){  int temp = arr[index];  arr[index] = arr[index+1];  arr[index+1] = temp;  }  
}  print(arr);  for(int index=0;index < arr.length-3;index++){  if(arr[index]>arr[index+1]){  int temp = arr[index];  arr[index] = arr[index+1];  arr[index+1] = temp;  }  
}  print(arr);  
  • 优化
for(int num=1;num<arr.length;num++){  for(int index=0;index<arr.length-num;index++){  if(arr[index]>arr[index+1]){  int temp = arr[index];  arr[index] = arr[index+1];  arr[index+1] = temp;  }  }  
}  

总结

  • 本文讲了冒泡排序,如果您还有更好地理解,欢迎沟通
  • 定位:分享 Android&Java知识点,有兴趣可以继续关注

转载于:https://www.cnblogs.com/dashucoding/p/9267201.html

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

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

相关文章

MacBook创建docker私有仓库docker server gave HTTP response to HTTPS client 问题处理办法

在 mac上搭建一个私有仓库&#xff0c;在向仓库push镜像时&#xff0c;会报如下错误&#xff1a; #docker push 192.168.163.131:5000/test Get https://192.168.163.131:5000/v1/_ping: http: server gave HTTP response to HTTPS client 百度了下答案发现都不试用mac版本的d…

Redis基础1(定义及基础)

Redis 定义&#xff1a;Redis是一个软件&#xff0c;帮助开发者对一台机器的内存进行操作 安装redis软件方法&#xff1a; 超链接地址&#xff1a;https://www.cnblogs.com/L5251/articles/9146881.html Python中下载依赖包 pip3 install redis 测试Redis是否安装成功 # 1、引入…

记最近分析的一个锁屏幕病毒

1.病毒运行后现象&#xff1a;病毒程序占满屏幕。鼠标依然在&#xff0c;但是无论点击哪儿都没反应。快捷键&#xff08;例如ctrlaltdelete,altf4&#xff08;关闭当前口&#xff09;,alttab&#xff08;切换窗口&#xff09;等&#xff09;全部失效。 关闭电源&#xff0c;用普…

vue-cli安装

、安装vue-cli 命令&#xff1a;npm install vue-cli -g -g表示全局安装 2、初始化项目 命令&#xff1a;vue init webpack my-project 使用vue命令初始化项目&#xff0c;并使用webpack打包 此时会跳出一系列问题&#xff0c;除了eslint那一项&#xff0c;其余的均可回答yes&a…

修复病毒破坏的文件关联并恢复程序图标

1.破坏文件关联的两种方式&#xff1a; &#xff08;1&#xff09;修改特定扩展名文件的对应名称。以.exe文件为例&#xff1a; 正常注册表中&#xff0c;.exe文件对应名称为&#xff1a; HKEY_CLASSES_ROOT\.exe &#xff08;默认&#xff09; exefile 病毒为…

分享几个病毒分析检测网址

1、在线病毒分析网站&#xff1a; 以下网站上传样本后&#xff0c;很快就会在网页上出报告的&#xff1a; &#xff08;1&#xff09;这个网址报告格式很简洁&#xff0c;我很喜欢&#xff1a;http://camas.comodo.com/ &#xff08;2&#xff09;这个网址的报告最全面&#xf…

leetcode 关于树的题目

判断一棵树里是否有两个节点的值之和等于某个值。 653. Two Sum IV - Input is a BST Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target. Example 1: Input: 5/ \3 6…

基于类的访问权限

一个方法可以访问所属类的所有对象的私有数据 class MyClass{public MyClass(String name){this.name name;}private String name;public boolean equals(MyClass other){return name.equals(other.name); } } 转载于:https://www.cnblogs.com/chenzida/p/9285989.html

双击程序后系统弹框“您无权访问此程序”的解决办法

xp下&#xff1a;我的电脑>工具>文件夹选项>查看&#xff0c;勾掉使用简单文件共享选项。如下图&#xff1a; 此时&#xff0c;在右键点击程序图标时&#xff0c;选项卡中会出现“安全”选项卡。如下图&#xff1a; 修改everyone为Administrator...并设置完全控制权限…

adb常用操作命令

1、adb devices 查看当前链接设备&#xff0c;列出连接到计算机的Android设备或者模拟器 2、adb install <apk文件路径> 安装软件 3、adb uninstall <软件名> 卸载apk之前要先查看报名&#xff1a; 知晓包名之后&#xff0c;就可以运用命令卸载该APK 4、adb shell …

让vs编写的程序在未安装vs的电脑上使用的一种方法

今天编了一个每隔10分钟就弹出一个网页的程序&#xff0c;为的是用来投票。代码如下: #include "stdafx.h" #include <iostream> #include <windows.h> int _tmain(int argc, _TCHAR* argv[]) { int i0; while(i0) { ShellExecute(NULL, "open&…

轻量级ORM框架 【Dapper】 的使用

ORM是什么&#xff1f; 从字面理解&#xff0c;O是Object&#xff0c;对象&#xff1b;R是Relation&#xff0c;关系&#xff1b;M是Mapping&#xff0c;映射。所以&#xff0c;用一句话概括就是&#xff1a;ORM是一种对象关系映射的技术。 Dapper 是.NET下的一种ORM框架。 Dap…

系统提示一个程序正在被另一个程序调用,如何知道是被哪个程序调用

今天在处理一个病毒时&#xff0c;发现病毒文件无法复制。于是利用processxp找到了病毒文件是被哪个文件调用&#xff0c;然后用md关闭了调用句柄后成功复制文件。具体情况如下&#xff1a; 为了找到是哪个程序调用了befsvc.exe&#xff0c;打开processexplorer.exe&#xff0c…

JS实现文本框不可编辑

方法1: οnfοcusthis.blur() 当鼠标放不上就离开焦点 <input type"text" name"input1" value"中国" οnfοcusthis.blur()> 方法2:readonly <input type"text" name"input1" value"中国" readonly>…

通过修改explorer.exe内存隐藏文件及注册表项

记录今天分析的一个隐藏自身及注册表项的病毒。 1.概述&#xff1a; &#xff08;1&#xff09;此病毒文件为路径为&#xff1a;C:\Windows7\4D525EC1C14.exe&#xff0c;且注册了自启动项&#xff1a; HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run […

WPF xaml中列表依赖属性的定义

WPF xaml中列表依赖属性的定义 原文:WPF xaml中列表依赖属性的定义列表内容属性 如上图&#xff0c;是一个列表标题排序控件&#xff0c;我们需要定义一个标题列表&#xff0c;从而让调用方可以自由的设置标题信息。 在自定义控件时&#xff0c;会遇到列表依赖属性&#xff0c;…

由于权限问题无法删除注册表键值的解决方法

在中了某个病毒之后手动删除病毒自启动项失败&#xff0c;如下图&#xff1a; 查看run项的权限&#xff0c;发现用户被修改成了Everyone&#xff0c;并且没有任何权限&#xff0c;如下图&#xff1a; 手动赋予Everyone用户完全控制权限后删除注册表项成功&#xff0c;如下图&am…

ELK篇---------elasticsearch集群安装配置

说明&#xff1a;本次ELK的基础配置如下&#xff1a;虚拟机&#xff1a;vmware 11系统&#xff1a;centos7.2 两台IP&#xff1a;172.16.1.15/16一、下载eswget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/zip/elasticsearch/2.1.0/e…

c# 常用基本函数

1、去除字符串中的所有空格 /// <summary> /// 去除字符串中的所有空格 /// </summary> /// <param name"originalStr"></param> /// <returns></returns> internal static string Tr…

c++利用windows api遍历指定文件夹及其子文件夹中的文件

以下代码在vs2008中测试通过&#xff0c;利用FindFirstFile,FindNextFile函数遍历了我电脑上全路径为“C:\\Users\\v_tianboli\\Desktop\\windows程式设计开发指南”的文件夹&#xff0c;并输出文件夹及子文件夹中的所有文件完整路径到控制台。完整代码如下&#xff1a; #inclu…