目录
一、什么是冒泡排序
通过对待从后像,依次比较相邻元素的值,若发现逆序交换,使值较大的元素逐渐从前向后水底下的气泡一样逐渐向上冒。
1.如何从升序排序:
每次比较相邻两数,小的交换到前面每轮结束后最大数到最后。
2.用二重循环实现冒泡排序:
外层循环是控制次数,内层循环交换数据。
3.冒泡排序的方法
1)n个数字来排序
2)两两相比小数靠前
3)外层循环N-1
4)内存循环N-1-i
二、例题
例题1:11,25,96,46,78,32,18,64这8个数的升序排序
就是从小到大,用冒泡排序,每个数比较,让小的在前面
int[] nums = {11,25,96,46,78,32,18,64};
System.out.println("排序之前");
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}
System.out.println();
//外层循环控制比较的轮数(以前讲的行数)
for(int i=0;i<nums.length-1;i++){
//比较相邻的两个元素,如果前面的元素比后面的元素大,交换位置
for(int j=0;j<nums.length-1-i;j++){
//用if判断
if(nums[j]>nums[j+1]){
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
System.out.println("排序之后");
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}
运行结果:
例题2://使用冒泡排序对输入的5名学员成绩进行降序排列
方法跟升序一样的,把5个同学成绩获取下来在进行冒泡排序
public class demo2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner ss= new Scanner(System.in);
//使用冒泡排序对输入的5名学员成绩进行降序排列
int[] nums=new int[5];
//循环写出成绩
for(int i=0;i<5;i++){
System.out.println("请输入第"+(i+1)+"次成绩");
nums[i]=ss.nextInt();
}
//获取成绩
System.out.println("5个同学成绩分别为");
for(int i=0;i<5;i++){
System.out.print(nums[i]+" ");
}
System.out.println();
for(int i=0;i<nums.length-1;i++){
for(int j=0;j<nums.length-1-i;j++){
if(nums[j]<nums[j+1]){
int temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
System.out.println("降序排列");
for(int i=0;i<nums.length;i++){
System.out.print(nums[i]+" ");
}
}
}
运行结果: