前言
冒泡排序可以理解成是水底的气泡,浮到水面的过程中,会逐渐变大,排序中的数也是这么一遍遍的查找交换移动,变的有所规律。
提示:以下是本篇文章正文内容,下面案例可供参考
一、实现步骤
首先我们定义一个数组,看下这一组数字,是怎么排序成功的吧
提示:红框发生交换行为的两个数(不一样交换,符合条件才交换)
二、具体代码
1、代码(从小到大排列)
代码如下(示例):
public class day04_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] numArr = { 31, 55, 32, 14, 12 };
//单次冒泡排序 -控制轮数
for (int i = 0; i < numArr.length - 1; i++) {
//内循环控制本轮中比较的次数
for(int j = 0; j < numArr.length - 1 - i ; j++) {
if (numArr[j] > numArr[j + 1]) {
//做个简单的交换
int temp = numArr[j];
numArr[j] = numArr[j + 1];
numArr[j + 1] = temp;
}
}
}
//遍历查看数组元素的结果
for (int i : numArr) {
System.out.println(i);
}
}
}
2.变化(从大到小排列)
代码如下(示例):从大到小不同之处其实其实是在if (numArr[j] > numArr[j + 1]),把这个改为<,则是从大到小;
public class day04_5 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] numArr = { 31, 55, 32, 14, 12 };
//单次冒泡排序 -控制轮数
for (int i = 0; i < numArr.length - 1; i++) {
//内循环控制本轮中比较的次数
for(int j = 0; j < numArr.length - 1 - i ; j++) {
//如果是 numArr[j] < numArr[j + 1] 则是从大到小排列
if (numArr[j] < numArr[j + 1]) {
//做个简单的交换
int temp = numArr[j];
numArr[j] = numArr[j + 1];
numArr[j + 1] = temp;
}
}
}
//遍历查看数组元素的结果
for (int i : numArr) {
System.out.println(i);
}
}
}
三、加上控制台输入(新题)
控制台输入5个学生的java成绩,使用冒泡排序后,按照分数从高到低输出
public class Day06_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建input对象
Scanner input = new Scanner(System.in);
//关闭input
input.close();
double[] scoreArr = new double[5];
double temp = 0.0;
//把接受到的值一个个放到scoreArr的数组里面
for (int i = 0; i < scoreArr.length; i++) {
System.out.println("请输入学生成绩");
int score = input.nextInt();
scoreArr[i] = score;
}
//冒泡排序 - 从大到小
for (int i = 0; i < scoreArr.length; i++) {
for (int j = 0; j < scoreArr.length - 1 - i; j++) {
if(scoreArr[j]<scoreArr[j+1]) {
temp = scoreArr[j];
scoreArr[j] = scoreArr[j+1];
scoreArr[j+1] = temp;
}
}
}
//遍历数组
for (double d : scoreArr) {
System.out.println(d);
}
}
}
总结
提示:这里对文章进行总结:
注意嵌套循环中,内外层的循环条件的关系,和判断交换的条件(会影响从大到小)或者从小到大排序