核心思想:

1)如有一个数列有 N(5)个元素,则至多需要 N-1(4)趟循环 才能保证数列有序

2) 每一趟循环都从数列的第一个元素开始比较,依次比较 相邻的两个元素,比较到数列的最后

3) 如果前一个元素大于后一个元素,则使用第三变量交换



基础算法的缺点:

1) 每一趟比较都要比较到数组的最后,没有必要,只要比较

到无序数列即可

for(int j=0;i<数组名.length-1;j++){
i. …..
}
i j<?
0 j<4
1 j<3
2 j<2
3 j<1
j<N-1-i;

2) 不管是否有序,都要进行 N-1 趟循环

如何判断有序?比较了一趟,没有发生交换,就是有序

定义一个 boolean 类型的变量 flag,默认有序 true;发生交

换,置为 false,一趟循环结束后,根据 flag 的值判断是否有序,有序,则退出循环

3) int temp 每次比较的时候都要给 temp 分配空间,比较完

毕后翻放空间所有的比较都使用一个 temp 变量,同一个空间,将 temp 变量提取到大循环外

完善后的代码:

int [] array1= {4,5,2,7,14,1,6};
int temp;
boolean flag;
int count=0;
System.out.println("排序前:"+Arrays.toString(array1));
// System.out.println(Arrays.binarySearch(array1, 7));
for (int i = 0; i <array1.length-1; i++) {
flag=true;
count++;
for (int j = 0; j <array1.length-1-i; j++) {
if (array1[j] > array1[j+1]) {
temp=array1[j];
array1[j]=array1[j+1];
array1[j+1]=temp;
flag=false;
}
}
if (flag) {
break;
} }
System.out.println("排序之后:"+Arrays.toString(array1));
System.out.println("循环了"+count+"次");

运行结果:



再次完善冒泡排序,这次使用键盘输入!

package com.bjsxt.Array;

import java.util.Arrays;
import java.util.Scanner; public class TestPaiXu {
public static void main(String[] args) { System.out.println("请输入一串整数,用逗号分开!");
Scanner input=new Scanner(System.in);
String str=input.next().toString();
String [] arr=str.split(",");
int temp;
boolean flag;
int count=0;
int [] array1 =new int[arr.length];
for (int i = 0; i < array1.length; i++) {
array1[i]=Integer.parseInt(arr[i]);
}
System.out.println("排序前:"+Arrays.toString(array1));
for (int i = 0; i <array1.length-1; i++) {
flag=true;
count++;
for (int j = 0; j <array1.length-1-i; j++) {
if (array1[j] > array1[j+1]) {
temp=array1[j];
array1[j]=array1[j+1];
array1[j+1]=temp;
flag=false;
}
}
if (flag) {
break;
}
}
input.close();
System.out.println("排序之后:"+Arrays.toString(array1));
System.out.println("循环了"+count+"次");
}
}

Java修炼——冒泡排序的更多相关文章

  1. [原]Java修炼 之 基础篇(二)Java语言构成

    上次的博文中Java修炼 之 基础篇(一)Java语言特性我们介绍了一下Java语言的几个特性,今天我们介绍一下Java语言的构成.        所谓的Java构成,主要是指Java运行环境的组成, ...

  2. Java版冒泡排序和选择排序

    一.理解说明 1.理解和记忆 冒泡排序:依次定位数组元素,每次只和相邻的且符合条件的元素交换位置. 选择排序:依次在数组的每个位置,通过逐个对比选择出最大或最小的元素. 2.知识点说明 (1)数组是引 ...

  3. 我JAVA修炼之路

    今天起,我会不定期更新我的java修炼之路, 2017.7.10,星期一 我参见了河南青云的培训班,这一天是我们的开班典礼. 我会不定期的总结我的学习笔记,大家喜欢的可以看看,不喜勿喷. 写代码: 1 ...

  4. Java之冒泡排序(升序)

    Java之冒泡排序 * 编辑者:鸿灬嗳 * 实现功能: 使用冒泡排序对数组:{25,24,12,76,101,96,28} 排序. */ package test05; public class Bu ...

  5. java 数组冒泡排序、转置(降序)

    1.java 数组冒泡排序 排序的基本原理(升序): 原始数据:  2 .1 .9 .0 .5 .3 .7 .6 .8: 第一次排序: 1  .2 .0 .5 .3 .7 .6 .8 .9 : 第二次 ...

  6. Java实现冒泡排序

    冒泡排序思想就是将数列的相邻两个数比较,较大的数往后保存,小的数往前. package Sort; import java.util.Arrays; public class BubbleSort { ...

  7. Java冒泡排序,Java对象冒泡排序

    今天呆公司特别无聊,百度了一下Java机试题,看到一个冒泡排序. 粘上我全部的代码: 实体类: package accp.com.internet;/** * 人物类 * @author xuxiao ...

  8. JAVA排序--[冒泡排序]

    package com.array; public class Sort_MaoPao { /** * 项目名称:冒泡排序 * 项目要求:用JAVA对数组进行排序,并运用冒泡排序算法 * 作者:Sev ...

  9. Java基础 -- 冒泡排序算法(带详细注释)

    冒泡排序的要点: 1.多轮排序,每轮排序中选出最大的元素放在最顶端,并且下次排序不再使用该元素; 2. 使用双for循环,外层for循环控制要排序的次数(轮数), 内层for循环控制当前要排序的元素并 ...

随机推荐

  1. PHP array_multisort实现二维数组排序

    PHP array_multisort实现二维数组排序 参数中的数组被当成一个表的列并以行来进行排序 - 这类似 SQL 的 ORDER BY 子句的功能.第一个数组是要排序的主要数组.数组中的行(值 ...

  2. Python 基础之re 模块

    Python 基础之大话 re 在使用re模块中主要会用到一下几个方法: re.match() #从头匹配一个字符串 re.search() #浏览全部字符串,匹配第一个符合规则的字符串 re.fin ...

  3. map集合中哪些是线程安全的

    为什么HashMap是线程不安全的 总说 HashMap 是线程不安全的,不安全的,不安全的,那么到底为什么它是线程不安全的呢?要回答这个问题就要先来简单了解一下 HashMap 源码中的使用的存储结 ...

  4. 本地yum配置

    yum yum(Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS 中的 Shell 前端软件包管理器.基于 RPM 包管理,能够从 ...

  5. [java笔记] 最近学的一些笔记

    1.@Override的用法 2.父类的返回值类型的范围,与子类返回值类型的返回的大小关系: 3.子类方法的权限修饰符,与子类方法的权限修饰符: 4.如果p1是一个对象,p2也是个对象,那么代码p1= ...

  6. webpack优化之玩转代码分割和公共代码提取

    前言 开发多页应用的时候,如果不对webpack打包进行优化,当某个模块被多个入口模块引用时,它就会被打包多次(在最终打包出来的某几个文件里,它们都会有一份相同的代码).当项目业务越来越复杂,打包出来 ...

  7. nyoj 58-最少步数 (BFS)

    58-最少步数 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:17 submit:22 题目描述: 这有一个迷宫,有0~8行和0~8列: 1,1,1 ...

  8. shell脚本2——控制语句

    1.顺序结构体 命令从上往下顺序执行 2.分支结构体 1)判断真假 test 表达式 或者 [ 表达式 ](必须有空格) 真返回0,假返回1 test的别名是[, 参数是] 判断表达式 记忆 解释 ! ...

  9. ef+Npoi导出百万行excel之踩坑记

            最近在做一个需求是导出较大的excel,本文是记录我在做需求过程中遇到的几个问题和解题方法,给大家分享一下,一来可以帮助同样遇到问题的朋友,二呢,各位大神也许有更好的方法可以指点小弟一 ...

  10. Python 之路 Day01 笔记-什么是变量,常量等

    变量 变量 是 为了存储 程序运算过程中的一些中间 结果,为了方便日后调用 变量的命名规则 1. 要具有描述性 2. 变量名只能'_','数字','字母'组成,不可以是空格或特殊字符(#?<., ...