冒泡排序

冒泡循环有两层循环,第一层控制循环轮数,第二层循环代表元素比较的次数。

利用冒泡排序获得升序或者降序的数组

//利用冒泡排序将一个数组进行降序排序
//思路:
//冒泡排序是将相邻元素进行比较,我们将两个相邻的元素进行比较,即后者与前者比较,如果后者较大,则交换两者位置
//当交换的次数够多,则能够实现降序排序
//数组内的每个元素都比较了一次我们称之为一轮比较
//通过大小值互换位置,每一轮比较下来总有最小的值会被扔在最后,且下一轮比较这个极值无需再参与比较
//数组有多少元素,就有多少坑位,每一个坑位都会在一次次比较中被淘汰出来的极值填住
//因为每轮比较都会淘汰一个元素,所以下一轮的比较次数就会少比较一次,即少比较的次数与轮数相等;元素间的比较次数会随着轮数的增加而减少 import java.util.Arrays;//导入类,方便后面使用类方法
public class Demo{ public static void main(String[] args){ int[] array={4,64,65,4164,564,156};
int[] b=sort(array);//使用我们自己写的降序方法,导入数组
System.out.println(Arrays.toString(b));//使用Arrays类的toString方法将数组进行打印
} //我们先写一个降序的方法,等会直接调用
public static int[] sort(int[] array){
int a=0;
for(int i=0;i<array.length-1;i++){//代表比较的轮数,因为每次淘汰一个元素,有多少坑位就需要多少次淘汰,就需要多少轮
for(int j=0;j<array.length-1-i;j++){//这里j<array.length-1-i需要好好理解一下,这里代表的是每一轮比较的次数
//这里两个for循环,第一个for循环是代表要比较的轮数,
if(array[j]<array[j+1]){//如果换成>,则此方法为升序排序
a=array[j];
array[j]=array[j+1];//两个元素不能相互赋值,必须借助第三方来转移
array[j+1]=a;
}
}
}
return array; }

上面我们已经成功写出冒泡排序的方法来对乱序的数组进行排序,但是当我们得到的一个数组他的排序方式已经是按照我们所写的方式进行排序的,那么我们再进行此方法进行排序,属实浪费资源,因此为了方法更加完善,我们将代码优化。在方法中加入一个执行标志来判断。

import java.util.Arrays;
public class Demo{
public static void main(String[] args){
int[] array={4,64,65,4164,564,156};
int[] b=sort(array);
System.out.println(Arrays.toString(b));
}
public static int[] sort(int[] array){
int a=0;
for(int i=0;i<array.length-1;i++){
boolean tag=false;//先定义一个标签
for(int j=0;j<array.length-1-i;j++){
if(array[j]<array[j+1]){
a=array[j];
array[j]=array[j+1];
array[j+1]=a;
tag=true;//如果有发生比较,即发生过位置交换,则标签变值
}
if(tag==false){
break;//如果元素一轮比较下来都没有发生位置互换,则说明排序满足当前方法的排序,无需再次下轮比较
}
}
}
return array;
}

最新文章

  1. Visual Studio 2010编译时总是提示&quot;调用目标发生了异常&quot;的解决
  2. openssl stack 数据结构栈基本操作
  3. mysql-now()读取当日日期-格式化
  4. js获取锚点名称 #
  5. asp.net 操作excel的一系列问题(未完待续)
  6. Vue.js学习 Item9 – 表单控件绑定
  7. Linux(Centos)配置OpenSSH无密码登陆&lt;转&gt;
  8. C语言char[]和char*比较
  9. HDU 1162 Eddy&#39;s picture
  10. 揽货最短路径解决方案算法 - V2(增加了时间维度-客户允许的服务时间段,C#/JAVA同步实现,带python作图)
  11. SQL 常用语法记录
  12. 100-days: twenty-five
  13. 【转载】Sqlserver强制密码过期导致数据库登录失败
  14. Spring Boot笔记三:配置文件
  15. python repr和str
  16. 队列&lt;一&gt;
  17. Yii2 环境配置生产环境和测试环境
  18. (zxing.net)一维码MSI的简介、实现与解码
  19. 【原创】python内存泄漏以及python flask框架莫名coredump
  20. 无法打开文件“atlsd.lib”

热门文章

  1. luogu P2882 [USACO07MAR]Face The Right Way G
  2. KingbaseES 全局索引
  3. Docker_构建_运行总结
  4. 深度学习库 SynapseML for .NET 发布0.1 版本
  5. 使用『jQuery』『原生js』制作一个导航栏动效 —— { }
  6. C++ 指针与二维数组名
  7. python 模块、原始字符串
  8. MySQL DDL执行方式-Online DDL介绍
  9. 【学习笔记】Vins-Mono论文阅读笔记(二)
  10. Elastic: 创建一个 Elastic 邮件警报 - 7.7 发行版