1、基本思路
从数组的左边开始,比较两个元素的大小,当左边大于右边时,更换左右元素位置,否则不改变;接着向右移动一步,比较第二个元素和第三个元素的大小,重复上述操作,直到最后一个元素,此时,最大的元素就已经移动到了最右边;然后进行下一轮比较,但是下一轮比较时,不需要比较最后一个元素了。
2、代码实现
public class BubbleSort {
public static void main(String[] args) {
int[] arr = new int[]{33, 24, 4, 28, 95, 63, 86, 77};
bubbleSort(arr);
for (int i = 0; i < arr.length; i++){
System.out.print(arr[i] + " ");
}
}
/**
* 冒泡排序
*
* @param arr 需要排序的整数数组
*/
public static void bubbleSort(int[] arr) {
int length = arr.length;
for (int i = length -1; i > 0; i-- ){
for (int j = 0; j < i; j++){
if (arr[j] > arr[j+1]){
swap(j,j+1,arr);
}
}
}
}
private static void swap(int i, int i1, int[] arr) {
int temp = arr[i];
arr[i] = arr[i1];
arr[i1] = temp;
}
}
双层循环,时间复杂度为O(N^2)
3、动态理解
查看这个网站,动态演示,帮助理解