近期打算把簡單的排序算法全部實現一遍,今天先寫個冒泡排序作爲打卡開始:
關注點:兩層循環,循環次數length-1,優化標識flag減少循環次數
public static void bubbleSort(int[] arr){ System.out.println("冒泡排序前:" + Arrays.toString(arr)); for(int i=0;i < arr.length - 1;i++){ boolean flag = true; //標示字段,減少循環次數 for(int j = 0; j < arr.length -i -1 ;j++){ //此處j < arr.length-i-1,因爲每循環一次最後面的一個數字都會變爲最大
if(arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; flag = false; } } if(flag){//循環一圈均未交換,則表示已經全部有序 break; } } System.out.println("冒泡排序後:" + Arrays.toString(arr)); }