Java_冒泡排序_原理及优化
冒泡排序及其优化
一.原理及优化原理
1.原理讲解
冒泡排序即:第一个数与第二个数进行比较,如果满足条件位置不变,再把第二个数与第三个数进行比较.不满足条件则替换位置,再把第二个数与第三个数进行比较,以此类推,执行完为一个趟,趟数等于比较的个数减一.
2.冒泡排序原理图示:(以98765序列为例,排序结果从小到大)

3.冒泡排序优化
优化版:每一次减少一次循环(即红色部分不需要在进行比较)

4.冒泡排序最终版
最终版:每一趟减少一次循环(删除线不需要再执行)

二.实现代码
1.冒泡排序实现主要代码
public static void main(String[] args) {
int []arr={9,8,7,6,5};
int len=arr.length;
for (int i=0;i<len-1;i++) {
for (int j=0;j<len-1;j++) {
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
冒泡排序实现代码
2.冒泡排序优化代码
public static void main(String[] args) {
int []arr={9,8,7,6,5,10};
int len=arr.length;
for (int i=0;i<len-1;i++) {
for (int j=0;j<len-1-i;j++) {
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
冒泡排序优化代码
3.冒泡排序最终代码
public static void main(String[] args) {
int []arr={9,8,7,6,5};
int len=arr.length;
for (int i=0;i<len-1;i++) {
System.out.println("第"+(i+1)+"趟");
//增加判断位
boolean flag=true;
for (int j=0;j<len-1-i;j++) {
System.out.println("第"+(j+1)+"次");
if(arr[j]>arr[j+1]){
int temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
flag=false;
}
System.out.println(Arrays.toString(arr));
}
//如果上面没有执行直接退出
if(flag){
break;
}
}
System.out.println(Arrays.toString(arr));
}
冒泡排序最终版
三.注意事项
1.多思考
Java_冒泡排序_原理及优化的更多相关文章
- Junit 注解 类加载器 .动态代理 jdbc 连接池 DButils 事务 Arraylist Linklist hashset 异常 哈希表的数据结构,存储过程 Map Object String Stringbufere File类 文件过滤器_原理分析 flush方法和close方法 序列号冲突问题
Junit 注解 3).其它注意事项: 1).@Test运行的方法,不能有形参: 2).@Test运行的方法,不能有返回值: 3).@Test运行的方法,不能是静态方法: 4).在一个类中,可以同时定 ...
- Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理
Lucene底层原理和优化经验分享(1)-Lucene简介和索引原理 2017年01月04日 08:52:12 阅读数:18366 基于Lucene检索引擎我们开发了自己的全文检索系统,承担起后台PB ...
- [GO]冒泡排序的原理和代码实现
冒泡排序的原理:对于一个数组里所有的元素进行两两比较,发生大于则变换数组下标则为升序排序,发生小于则变换数据下标的则为降序排序 比如给定的数组为[1, -2, 3, -4],对于我们的需求,两两比较后 ...
- MySQL/MariaDB数据库的索引工作原理和优化
MySQL/MariaDB数据库的索引工作原理和优化 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 实际工作中索引这个技术是影响服务器性能一个非常重要的指标,因此我们得花时间去了 ...
- jvm出现OutOfMemoryError时处理方法/jvm原理和优化参考
The heap stores all of the objects created by your java program.The heap's contents is monitored by ...
- Redis从出门到高可用--Redis复制原理与优化
Redis从出门到高可用–Redis复制原理与优化 单机有什么问题? 1.单机故障; 2.单机容量有瓶颈 3.单机有QPS瓶颈 主从复制:主机数据更新后根据配置和策略,自动同步到备机的master/s ...
- Nginx 笔记(四)nginx 原理与优化参数配置 与 nginx 搭建高可用集群
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.nginx 原理与优化参数配置 master-workers 的机制的好处 首先,对于每个 ...
- Redis 入门到分布式 (七)Redis复制的原理与优化
一.目录 Redis复制的原理与优化 什么是主从复制 全量复制和部分复制 复制的配置 故障处理 开发运维常见问题 二. 什么是主从复制 1.单机有什么问题? 单机如果机器故障,那么久无法及时提供服务: ...
- InvalidClassException异常_原理和解决方案和练习_序列化集合
InvalidClassException异常_原理和解决方案 当JVM反序列化对象的时候,能找到class文件,但是class文件在序列化对象之后发生了修改,那么反序列化操作也会失败,抛出一个Inv ...
随机推荐
- RabbitMQ 任务分发机制
在上篇文章中,我们解决了从发送端(Producer)向接收端(Consumer)发送“Hello World”的问题.在实际的应用场景中,这是远远不够的.从本篇文章开始,我们将结合更加实际的应用场景来 ...
- 常用类:Object
2017-08-08 Object :作为所有类的根类,(超类,父类) 常用的方法: public int hasCode(){//返回该对象的哈希码值(地址)}:判断对象是否在同一内存地址上 pub ...
- 模拟poj1350
http://poj.org/problem?id=1350 题意:给你一个数,你用这个数重排序后的最大值减去最小值,当这个差值等于0或者6174时就结束,否则就用这个差值再排序再求差值.如果这个数不 ...
- 设置npm的registry
.原npm地址 npm config set registry http://registry.npmjs.org .设置国内镜像 a.通过config命令 npm config set regist ...
- Redhat/CentOS7-环境虚拟机简单搭建Nginx+Tomcat负载均衡集群
Tomcat服务器是一个免费的开放源代码的web应用服务器,属于轻量级应用服务器,是开发和调试JSP程序的首选.由于Tomcat处理静态HTML的能力运不及Apache或者Nginx,所以Tomcat ...
- Redis-06.Cluster
Redis Cluster是一个高性能高可用的分布式系统.由多个Redis实例组成的整体,数据按照一致性哈希算法存储分布在多个Redis实例上,并对使用虚拟槽(Slot)对一致性哈希算法进行改进,通过 ...
- DevOps最佳工具集实践
在列出DevOps 工具链之前,介绍一下什么是DevOps,虽然DevOps这个概念现在还没有标准的定义,但我们可以追溯一下其过去九年的历史发展过程(从2009年-2017年),列出几个相对明确又有所 ...
- 【高速接口-RapidIO】3、RapidIO串行物理层的包传输过程
一.引言 前几篇文章已经谈到RapidIO的协议,串行物理层与控制符号. RapidIO协议包括读事务(NREAD),写事务(NWRITE),流写事务(SWRITE),有响应的写事务(NWRITE_R ...
- AJAX从入门到放弃(二)
XHR 响应 由 driventokill 创建,路飞 最后一次修改 2015-09-25 AJAX - 服务器 响应 由于 HTTP 响应是由服务端发出的,并且服务器做出响应需要时间(比如网速慢等原 ...
- eclipse运行spark程序时日志颜色为黑色的解决办法
自从开始学习spark计算框架以来,我们老师教的是local模式下用eclipse运行spark程序,然后我在运行spark程序时,发现控制台的日志颜色总是显示为黑色,哇,作为程序猿总有一种强迫症,发 ...