您的位置:首页 > 编程语言 > Java开发

"冒泡排序"算法-图文代码教你轻松简单理解-java编程

2016-06-08 01:26 543 查看

1.概念

关于java的经典排序,不得不提到冒泡排序,什么是冒泡排序,和前面讲的选择排序有什么不同?起始大家可以把"冒泡"理解成一个一个数字冒起来,每轮排序都得到一个最大数在右边,下面我通过讲解其特点,并画图帮组大家理解.


2.特点

1.每次比相邻两个
2.从左边开始:
1.第0个和第1个比,大的排后
2.第1个和第2个比,大的排后
3.第2个和第3个比,大的排后
4.第3个和第4个比,大的排后
=>1轮过后的最大的放后面;
=>2轮过后的得倒数第2大;
=>3轮过后的得倒数第3大;
=>4轮过后的得倒数第4大;
3.最终得出结果


3.过程图解



4.代码详情

code

/**
* 冒泡排序
*
* 总思路:
* 1.每次比相邻两个
* 2.从左边开始:
*      1.第0个和第1个比,大的排后
*      2.第1个和第2个比,大的排后
*      3.第2个和第3个比,大的排后
*      4.第3个和第4个比,大的排后
*      =>1轮过后的最大的放后面;
*      =>2轮过后的得倒数第2大;
*      =>3轮过后的得倒数第3大;
*      =>4轮过后的得倒数第4大;
* 3.最终得出结果
*
* 优化,看完成的代码:
*      1.从外往里看,第一轮后得到最大在后
*      2.第二轮后里面就可用少一次不用比了  所以可以变成i<length-1-j;
*
*/
public class Demo03 {
public static void main(String[] args) {
int[] arr = { 4, 2, -6, 9, 1 };//角标0-4,length=5;
print(arr,"初始");
bubbleSort(arr);
print(arr,"结果");

}

private static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length-1-i; j++) {//-1防越界,//-i 优化,因为每次已经得出最右一位
if (arr[j] > arr[j + 1]) {            //两个连续的逐个比就是j和j-1;
swap(arr, j, j + 1);//替换
}
}
print(arr,"第"+(i+1)+"轮");
}
}
private static void swap(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
private static void print(int[] arr,String str) {
for (int i = 0; i < arr.length; i++) {
if (i != arr.length - 1) {
if (i == 0) {
System.out.print("[" + arr[i] + ",");
} else {
System.out.print(arr[i] + ",");
}
} else {
System.out.println(arr[i] + "]"+"----"+str);
}
}
}
}


.运行结果

[4,2,-6,9,1]----初始

[2,-6,4,1,9]----第1轮
[-6,2,1,4,9]----第2轮
[-6,1,2,4,9]----第3轮
[-6,1,2,4,9]----第4轮
[-6,1,2,4,9]----第5轮

[-6,1,2,4,9]----结果


5.总结

大家只要记住冒泡排序的特点即可,抓住特点就能理解其过程,然后通过for循环并逐个对比ints[j]和ints[j+1]就可得出结果.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 冒泡排序 算法