冒泡排序
定义
- 重复地访问要排序的元素序列,依次比较两个相邻的元素,如果顺序比预定的大或者小就会交换这两个数。
实质
- 把大(小)的元素往前(后)调
算法原理
(1)比较相邻的元素;
(2)对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对;
(3)针对所有的元素重复以上的步骤,除了最后一个元素;
(4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码实现
package demo2;
/**
* 冒泡排序
* 通过控制台输入数值,使用冒泡排序法将数值从小到大或者从大到小排序输出
*/
import java.util.Scanner;
public class sort_Bubble {
public static void main(String[] args) {
// 控制台输入十个成绩,保存到数组中
Scanner input = new Scanner(System.in);
int score[] = new int[10];
System.out.println("请输入十个整数:");
//循环输入十个数值
for (int i = 0; i < score.length; i++) {
score[i] = input.nextInt();
}
// 冒泡排序
System.out.println("********从小到大*********");
for (int i = 0; i < score.length-1; i++) {
//i 控制比较轮数,共有score.length个数值,需要比较score.length-1轮
for (int j = 0; j < score.length - 1 - i; j++) {
//j 控制比较每轮比较的次数
if (score[j] > score[j + 1]) {
//比较两个数值大小,较小的往前排
int temp = score[j];
score[j] = score[j + 1];
score[j + 1] = temp;
}
}
}
//输出排序后的序列
for (int i : score) {
System.out.print(i+" ");
}
System.out.println();
System.out.println("********从大到小*********");
for (int i = 0; i < score.length-1; i++) {
for (int j = 0; j < score.length - 1 - i; j++) {
if (score[j] < score[j + 1]) {
int temp = score[j];
score[j] = score[j + 1];
score[j + 1] = temp;
}
}
}
for (int i : score) {
System.out.print(i+" ");
}
}
}
运行结果: