Java基础之冒泡排序法

基本思想:通过对待排序序列从后向前(从下标较大的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部

//化繁为简,先死后活
//将多轮排序使用外层循环包括起来即可
/*
数组 [24, 69, 80, 57, 13]
第一轮排序:目标把最大数放在最后
第一次比较[24, 69, 80, 57, 13]
第二次比较[24, 69, 80, 57, 13]
第三次比较[24, 69, 57, 80, 13]
第四次比较[24, 69, 57, 13, 80]
 */
int[] arr = {24, 69, 80, 57, 13};
int temp = 0;//用于辅助交换的变量
//将多轮排序使用外层循环包括起来即可
//先死后活 =>就是arr.length - 1
for(int i = 0; i < arr.length - 1; i++ ){//外层循环是4次
	for(int j = 0; j < arr.length - 1 - i; j++ ){//4次比较-3次-2次-1次
	//如果前面的数>后面的数,就交换
	if(arr[j] > arr[j + 1]){
		temp = arr[j];
		arr[j] = arr[j + 1];
		arr[j + 1] = temp;
		}
	}
	System.out.println();
	System.out.println("==第" + (i + 1) + "轮==");
	for(int j = 0; j < arr.length; j++ ){
		System.out.print(arr[j] + "\t");
	}
}
// /*
// 第二轮排序:目标把最第二大数放在倒数第二个位置
// 第一次比较[24, 69, 57, 13, 80]
// 第二次比较[24, 57, 69, 13, 80]
// 第三次比较[24, 57, 13, 69, 80]
//  */
// for(int j = 0; j < 4; j++ ){//3次比较
// 	//如果前面的数>后面的数,就交换
// 	if(arr[j] > arr[j + 1]){
// 		temp = arr[j];
// 		arr[j] = arr[j + 1];
// 		arr[j + 1] = temp;
// 	}
// }
// System.out.println();
// System.out.println("==第二轮==");
// for(int j = 0; j < arr.length; j++ ){
// 	System.out.print(arr[j] + "\t");
// }
// /*
// 第三轮排序:目标把最第三大数放在倒数第三个位置
// 第一次比较[24, 57, 13, 69, 80]
// 第二次比较[24, 13, 57, 69, 80]
//  */
// for(int j = 0; j < 4; j++ ){//2次比较
// 	//如果前面的数>后面的数,就交换
// 	if(arr[j] > arr[j + 1]){
// 		temp = arr[j];
// 		arr[j] = arr[j + 1];
// 		arr[j + 1] = temp;
// 	}
// }
// System.out.println();
// System.out.println("==第三轮==");
// for(int j = 0; j < arr.length; j++ ){
// 	System.out.print(arr[j] + "\t");
// }
// /*
// 第四轮排序:目标把最第四大数放在倒数第四个位置
// 第一次比较[13, 24, 57, 69, 80]
//  */
// for(int j = 0; j < 4; j++ ){//1次比较
// 	//如果前面的数>后面的数,就交换
// 	if(arr[j] > arr[j + 1]){
// 		temp = arr[j];
// 		arr[j] = arr[j + 1];
// 		arr[j + 1] = temp;
// 	}
// }
// System.out.println();
// System.out.println("==第四轮==");
// for(int j = 0; j < arr.length; j++ ){
// 	System.out.print(arr[j] + "\t");
// }
posted @ 2022-03-08 11:39  阿翼  阅读(52)  评论(0)    收藏  举报