数组高级冒泡排序
冒泡排序原理
相邻元素两两比较,大的往后放,第一次完毕,最大值出现在了最大索引处
图解:
推导过程:
数组: int[] arr= {24, 69, 80, 57, 13};进行四轮比较
package org.westos.demo;
import java.util.Arrays;
public class MyTest {
public static void main(String[] args) {
int[] arr= {24, 69, 80, 57, 13};
//数组元素的排序:使数组中的元素变为有序。
//冒泡排序:数组中的元素两两比较,大的往后放,经过一轮比较,最大的元素就出现在了最后面。
tuidao(arr);
}
private static void tuidao(int[] arr){
//第一轮:比较了4次
for (int i = 0; i < arr.length-1; i++) {
if(arr[i]>arr[i+1]){
//使用中间变量进行值交换
int t = arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
//查看第一次比较结果
System.out.println(Arrays.toString(arr));
//第二轮:比较了3次
for (int i = 0; i < arr.length - 1 - 1; i++) {
if(arr[i]>arr[i+1]){
//使用中间变量进行值交换
int t = arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
//查看第二次比较结果
System.out.println(Arrays.toString(arr));
//第三轮:比较了2次
for (int i = 0; i < arr.length - 1 - 1-1; i++) {
if(arr[i]>arr[i+1]){
//使用中间变量进行值交换
int t = arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
//查看第三次比较结果
System.out.println(Arrays.toString(arr));
//第四轮:比较了1次
for (int i = 0; i < arr.length - 1 - 1-1-1; i++) {
if(arr[i]>arr[i+1]){
//使用中间变量进行值交换
int t = arr[i];
arr[i]=arr[i+1];
arr[i+1]=t;
}
}
//查看第四次比较结果
System.out.println(Arrays.toString(arr));
}
}
推导过程输出结果:
冒泡排序
package org.westos.demo;
import java.util.Arrays;
public class MyTest1 {
public static void main(String[] args) {
int[] arr = {24, 69, 80, 57, 13, 85, 23, 0, 12, 7};
//数组元素的排序:使数组中的元素变为有序。
//冒泡排序:数组中的元素两两比较,大的往后放,经过一轮比较,最大的元素就出现在了最后面。
//外层循环控制轮数
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
//使用中间变量进行值交换
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
System.out.println(Arrays.toString(arr));
}
}
输出结果: