Java修炼——冒泡排序
核心思想:
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修炼——冒泡排序的更多相关文章
- [原]Java修炼 之 基础篇(二)Java语言构成
上次的博文中Java修炼 之 基础篇(一)Java语言特性我们介绍了一下Java语言的几个特性,今天我们介绍一下Java语言的构成. 所谓的Java构成,主要是指Java运行环境的组成, ...
- Java版冒泡排序和选择排序
一.理解说明 1.理解和记忆 冒泡排序:依次定位数组元素,每次只和相邻的且符合条件的元素交换位置. 选择排序:依次在数组的每个位置,通过逐个对比选择出最大或最小的元素. 2.知识点说明 (1)数组是引 ...
- 我JAVA修炼之路
今天起,我会不定期更新我的java修炼之路, 2017.7.10,星期一 我参见了河南青云的培训班,这一天是我们的开班典礼. 我会不定期的总结我的学习笔记,大家喜欢的可以看看,不喜勿喷. 写代码: 1 ...
- Java之冒泡排序(升序)
Java之冒泡排序 * 编辑者:鸿灬嗳 * 实现功能: 使用冒泡排序对数组:{25,24,12,76,101,96,28} 排序. */ package test05; public class Bu ...
- java 数组冒泡排序、转置(降序)
1.java 数组冒泡排序 排序的基本原理(升序): 原始数据: 2 .1 .9 .0 .5 .3 .7 .6 .8: 第一次排序: 1 .2 .0 .5 .3 .7 .6 .8 .9 : 第二次 ...
- Java实现冒泡排序
冒泡排序思想就是将数列的相邻两个数比较,较大的数往后保存,小的数往前. package Sort; import java.util.Arrays; public class BubbleSort { ...
- Java冒泡排序,Java对象冒泡排序
今天呆公司特别无聊,百度了一下Java机试题,看到一个冒泡排序. 粘上我全部的代码: 实体类: package accp.com.internet;/** * 人物类 * @author xuxiao ...
- JAVA排序--[冒泡排序]
package com.array; public class Sort_MaoPao { /** * 项目名称:冒泡排序 * 项目要求:用JAVA对数组进行排序,并运用冒泡排序算法 * 作者:Sev ...
- Java基础 -- 冒泡排序算法(带详细注释)
冒泡排序的要点: 1.多轮排序,每轮排序中选出最大的元素放在最顶端,并且下次排序不再使用该元素; 2. 使用双for循环,外层for循环控制要排序的次数(轮数), 内层for循环控制当前要排序的元素并 ...
随机推荐
- linux 相关指令
modinfo *.ko 显示驱动文件的信息.
- containerd 与安全沙箱的 Kubernetes 初体验
作者 | 易立 阿里云资深技术专家 containerd 是一个开源的行业标准容器运行时,关注于简单.稳定和可移植,同时支持 Linux 和 Windows. 2016 年 12 月 14 日,Do ...
- PHP经典算法题
1.百钱买百鸡 公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡,母鸡,小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱. 分析:估计现在小学生都能手工推 ...
- MySql: AUTO_INCREMENT
首先要在Column使用AUTO_INCREMENT (每张表只有一个列可以AUTO_INCREMENT): 以下示例取自MySql官网(http://dev.mysql.com/doc/refman ...
- PHP代码安全有必要了解下
攻击者通过构造恶意SQL命令发送到数据库,如果程序未对用户输入的 SQL命令执行判断过滤,那么生成的SQL语句可能会绕过安全性检查,插入其他用于修改后端数据库的语句,并可能执行系统命令,从而对系统造成 ...
- [综合] ISE的综合结果
1.count2 == 7‘d12,会被综合成下面这个样子, 7‘d12就是左边下面这根绿线,等于符号在中间的圆圈里. 2.什么线都不点的时候,也就什么也没被选中, 而一旦我点击了某根线,却发现图里到 ...
- jenkins手把手教你从入门到放弃03-安装Jenkins时web界面出现该jenkins实例似乎已离线
简介 很久没有安装jenkins了,因为之前用的的服务器一直正常使用,令人郁闷的是,之前用jenkins一直没出过这个问题. 令人更郁闷的是,我尝试了好多个历史版本和最新版本,甚至从之前的服务器把je ...
- pat 1035 Password(20 分)
1035 Password(20 分) To prepare for PAT, the judge sometimes has to generate random passwords for the ...
- nyoj 273-字母小游戏 (getline(cin, string))
273-字母小游戏 内存限制:64MB 时间限制:1000ms 特判: No 通过数:16 提交数:24 难度:0 题目描述: 给你一个乱序的字符串,里面包含有小写字母(a--z)以及一些特殊符号,请 ...
- Session,Token,Cookie相关区别
1. 为什么要有session的出现? 答:是由于网络中http协议造成的,因为http本身是无状态协议,这样,无法确定你的本次请求和上次请求是不是你发送的.如果要进行类似论坛登陆相关的操作,就实现不 ...