java排序算法之冒泡排序
作者:张兵游勇 发布时间:2023-04-05 21:03:42
标签:java,冒泡排序
本文实例为大家分享了java排序算法之冒泡排序的具体代码,供大家参考,具体内容如下
冒泡排序
冒泡排序无疑是最为出名的排序算法之一,从序列的一端开始往另一端冒泡(你可以从左往右冒泡,也可以从右往左冒泡,看心情),依次比较相邻的两个数的大小(到底是比大还是比小也看你心情)
java代码实现bubblesort冒泡排序
package com.zy.test;
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
System.out.println("sortTest");
int[] arr={6,3,8,2,9,1};
System.out.println(Arrays.toString(arr));
for (int i=0;i<arr.length-1;i++){
for (int j=0;j<arr.length-1-i;j++){
int temp = 0;
if (arr[j]>arr[j+1]) {
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
冒泡排序思路:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
Java实现冒泡排序优化
冒泡有一个最大的问题就是这种算法不管不管你有序还是没序,闭着眼睛把你循环比较了再说.
比如我举个数组例子:[ 5,6,7,8,9 ],一个有序的数组,根本不需要排序,它仍然是双层循环一个不少的把数据遍历干净,这其实就是做了没必要做的事情,属于浪费资源。
针对这个问题,我们可以设定一个临时遍历来标记该数组是否已经有序,如果有序了就不用遍历了。
package com.zy.test;
import java.util.Arrays;
public class BubbleSort {
public static void main(String[] args) {
System.out.println("sortTest");
int[] arr={6,3,8,2,9,1};
System.out.println(Arrays.toString(arr));
for (int i=0;i<arr.length-1;i++){
boolean flag=true;
for (int j=0;j<arr.length-1-i;j++){
int temp = 0;
if (arr[j]>arr[j+1]) {
flag=false;
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}if (flag){
break;
}
}
System.out.println(Arrays.toString(arr));
}
}
来源:https://blog.csdn.net/qq_43623447/article/details/116949619


猜你喜欢
- aop,即面向切面编程,面向切面编程的目标就是分离关注点,比如:一个骑士只需要关注守护安全,或者远征,而骑士辉煌一生的事迹由谁来记录和歌颂呢
- 本文实例为大家分享了Java实现双向链表的具体代码,供大家参考,具体内容如下双向链表与单链表的对比:1、单向链表查找只能是一个方向,双向链表
- 读取resources下文件的方法网上有问答如下:问:new FileInputStream("src/main/resource
- C语言学习建议1.阅读文章一本更有意义又有趣的书《C专家编程》这本书叙述了各种各样趣味的八卦,例如设计方案一个程序流程来查验过道里的自动售卖
- 对于javascript的冒泡,我一直误解它了,冒泡,即是从底层往外blow blow blow ...惭愧的是,我一直以为阻止冒泡是阻止父
- 最近一直在使用邮件发送功能,老是遇到问题,后面才找到,原来并不是程序问题引起的,我吧问题整出来, javax.mail.SendFailed
- Struts2 * Struts2 * 的概念和Spring Mvc * 一样。1.Struts2 * 是在访问某个Action或Actio
- 前言本文将模块化地介绍如何实现一个动态开辟空间的通讯录,其有以下九个功能:打印主菜单添加联系人删除联系人打印通讯录查找联系人修改联系人置顶联
- SpringBoot 2.1.4 错误处理机制springboot的自动配置中帮我们配置了相关的错误处理组件,例如访问一个不存在的页面,就会
- 最近在改写WebApp时要将以前用泛型处理例程写的Captcha 改成使用WebApi 来实作机制,在实作的过程中发现使用IRequires
- 一、使用Optional引言1.1、代码问题引出在写程序的时候一般都遇到过 NullPointerException,所以经常会对程序进行非
- 1.vs中生成dll对应的生成dll的cpp如下 #include<opencv2/opencv.hpp>#inclu
- C#如何安全、高效地玩转任何种类的内存之Span的本质一、what - 痛点是什么?回答这个问题前,先总结一下如何用C#操作任何类型的内存:
- 我们都知道,Android上的界面展示都是通过Activity实现的,Activity实在是太常用了,我相信大家都已经非常熟悉了,这里就不再
- 前言:数据抽象是一种仅向用户显示基本细节的属性。不向用户显示琐碎或非必需的单元。例如:汽车被视为汽车而不是其单个组件。数据抽象也可以定义为仅
- 先来看看效果图如何使用示例代码PromptViewHelper pvHelper = new PromptViewHelper(mActiv
- 本文,将介绍如何通过Java后端程序代码在PDF中创建工具提示。添加工具提示后,当鼠标悬停在页面上的元素时,将显示工具提示内容。导入jar包
- 本文实例讲述了Android基于TextView属性android:ellipsize实现跑马灯效果的方法。分享给大家供大家参考,具体如下:
- MDC介绍MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的
- 详解C#编程获取资源文件中图片的方法本文主要介绍C#编程获取资源文件中图片的方法,涉及C#针对项目中资源文件操作的相关技巧,以供借鉴参考。具