冒泡排序,思想如同其名。如同冒泡的过程一样,一个数字(最小或最大的数字)不断上浮,对数组不断重复这个过程,最终使得数组变得有序。
过程:
因为需要遍历n次,所以每一次遍历时,只需专注于不断比较相邻的值,最终能够将最大值移到末尾。
因为每次已经将最大值移到末尾,则无需比较该值,所以在每次遍历时,遍历的长度都会减1。
动画效果:
package lc_test;
import java.util.*;
public class test
{
public static void main(String[] args){
String[] strs = {"ddddddddddg","dgggggggggg"};
int[] nums = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48};
BubbleSort(nums);
System.out.println(nums.toString());
}
public static void BubbleSort(int[] nums) {
int n = nums.length;
//遍历n次,每次都是从头到尾
int count = 0;
boolean flag = true;
for(int i=n;i>0;i--){
for(int j = 0; j<i-1;j++){
//每遍历一次就会将一个较大值移到末端
if(nums[j]>=nums[j+1]){
//交换
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
flag = false;
}
count++;
}
//代表已经排好了不用再遍历了
if(flag==true) break;
}
System.out.println(count);
}
}