一、冒泡排序
思路:兩兩比較相鄰記錄,如果反序則交換
冒泡排序時間複雜度最好爲O(n),最壞爲O(n^2)
實現:
********************************************************************************
public class BubbleSort{
public static void bubbleSort(int[] arr){
if(arr==null || arr.length==0) return;
for(int i=0; i<arr.length-1; i++){
for(int j=arr.length-1; j>i ; j--){
if(arr[j] < arr[j-1]){
swap(arr, j-1 , j);
}
}
}
}
public static void swap(int[] arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
***************************************************************************************
改進思路1:設置標識位,如果有一趟沒有發生交換(flag=false),說明排序已完成;
改進思路2:記錄一輪下來標記的最後位置,下次從頭部遍歷到這個位置就ok。