冒泡排序(Bubble Sorting)的基本思想是:通过将排序序列从前向后从下标小的元素开始,依次比较相邻元素的值,若发现逆序则交换,使得值相对较大的元素逐渐从前移动到后,像是水里的泡泡一样沉得往下落,轻的向上冒。
优化:当如果其中一趟冒泡排序没有进行交换时,则说明序列有序,此时就无需在进行排序。也就是说可以在排序过程中设置一个标志flag判断元素是否进行过叫唤。从而提升排序效率。
package DataStructure; import java.util.Arrays; public class BubbleSort { public static void main(String[] args) { int[] num = {20,9,-1,20,49}; BubbleSort(num); System.out.println(Arrays.toString(num)); } public static void BubbleSort(int[] array) { //冒泡排序的时间复杂度一般为O(n²) int temp = 0; boolean flag = false;//标识变量 表示是否进行交换 for(int i=0;i<array.length-1;i++){ for(int j=0;j<array.length-1-i;j++) { if(array[j]>array[j+1]) { flag = true; temp=array[j]; array[j] = array[j+1]; array[j+1] = temp; } } if(!flag) {//该趟排序中 没有发生交换 break; }else { flag = false;//重置flag!!! 进行下次判断 } } } }