冒泡排序的思想:
一组数据,从前到后两两之间比大小,将大的数像水中的泡泡上浮一样往后传。
例子:5 1 3 =>1 5 3=>1 3 5
代码主体:
import java.util.Scanner;
public class maopaopaixv_fengzhuang {
public static void main(String[] args) {
//冒泡法从小到大排序数组
//定义数组
int[] arr = new int[100];
//定义数组需要的长度
int len = 5;
//封装
//输入
maopaopaixv_fengzhuang.input(arr, len);
//排序
maopaopaixv_fengzhuang.paixv(arr, len);
//输出
maopaopaixv_fengzhuang.output(arr, len);
}
//输入
public static void input(int[] a, int chang) {
//抓取命令
Scanner scanner = new Scanner(System.in);
System.out.println("输入"+chang+"个数字:");
for (int i = 0; i < chang; i++) {
a[i] = scanner.nextInt();
}
}
//排序
public static void paixv(int[] a, int chang) {
int r;
/**第一个for是控制总循环的次数
* 确保循环要从头开始多少次
* 每次循环都要确保将最大的数放到最后一位,第二大的数放到n-1位,以此类推
* 当到最后一位的时候不用跟自己比,所以是数组长-1
*/
for (int i = 0; i < chang-1; i++) {
//第二个for是将数字第j与j+1比大小,前大后小的互换位置
//确保每次循环都将本次循环最大的数字放到最后一位
//因为每次循环完后面沉淀到最后的数字肯定是最大的,没必要再进入循环比大小
//所以每次进入第二个for就会少比对一次,因此比对次数<数组长-1-i
for (int j = 0; j < chang - 1 - i; j++) {
//当比对的数是前大后小时,两两交换
if (a[j]>a[j+1]){
r=a[j];
a[j]=a[j+1];
a[j+1]=r;
}
}
}
}
//输出
public static void output(int[] a, int chang) {
//for循环输出数组
for (int i = 0; i < chang; i++) {
System.out.print(" " + a[i]);
}
}
}
输出结果:
输入5个数字:
85 97 41 52 5
5 41 52 85 97
Process finished with exit code 0
原文链接: https://blog.csdn.net/daibadetianshi/article/details/136763081