冒泡排序
由于数学不咋的,也非计算机专业,就不写什么算法复杂度了
写在day06"评委打分"之后,在"评委打分"题中,需要找到数组中的最小值和最大值。从小到大排序之后,最小值自然就是arr[0],最大值自然就是arr[arr.length-1]
冒泡排序的执行过程
示例一 最大数移动到最右边
public class Bubble {
public static void main(String[] args) {
int[] arr = {10, 9, 8, 20, 5};
//下面的代码相当于把每两个相邻的数进行比较,如果左边的大于右边的,就交换位置
//程序跑完之后最大的数就到了最右边
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
int temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
}
}
//调用printArray()方法
printArray(arr);
}
public static void printArray(int[] arr) {
//输出数组的方法
System.out.print("[");
for (int i = 0; i < arr.length - 1; i++) {
System.out.print(arr[i] + ", ");
}
System.out.print(arr[arr.length - 1] + "]");
}
}
程序运行之前 [10, 9, 8, 20, 5]
程序运行结果:
这时数组为 [9, 8, 10, 5, 20]
示例二:冒泡算法的实现
冒泡排序的实现:
public class BubbleSort{
public static void main(String[] args) {
int[] array = {10,9,8,20,5};
bubble(array);
printArray(array);
}
public static void bubble(int[] array) {
for (int i = 0; i < array.length; i++){//外层循环控制排序趟数
for (int j = 0; j < array.length - 1 - i; j++){//内层循环控制每一趟排序多少次
if (array[j] > array[j + 1]) {
int temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
public static void printArray(int[] arr) {
System.out.print("[");
for (int i = 0; i < arr.length - 1; i++) {
System.out.print(arr[i] + ", ");
}
System.out.print(arr[arr.length - 1] + "]");
}
}
程序运行之前 [10, 9, 8, 20, 5]
程序运行结果:
这时数组为 [5, 8, 9, 10, 20]
示例二的代码中,当 i = 0时,就是示例一。
参考文章:https://www.cnblogs.com/shen-hua/p/5422676.html