Java中的排序算法有很多種,在其中快速排序和冒泡排序是比較常用的兩種。這篇文章將分別介紹這兩種排序算法的實現(xiàn)方法和運行效率。
快速排序:
public static void quickSort(int[] arr, int start, int end) { if (start< end) { int pivot = arr[start]; int i = start + 1; int j = end; while (i<= j) { while (i<= j && arr[i]< pivot) { i++; } while (i<= j && arr[j] >pivot) { j--; } if (i<= j) { swap(arr, i, j); } } swap(arr, start, j); quickSort(arr, start, j - 1); quickSort(arr, j + 1, end); } } public static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }
快速排序的實現(xiàn)方法比較簡單,基本思路是選取一個元素(通常是第一個或者最后一個元素)作為軸心(pivot),然后把數(shù)組劃分為兩個部分,一部分是小于軸心的,另一部分是大于軸心的。然后對這兩個部分分別遞歸地進(jìn)行快速排序。
快速排序的時間復(fù)雜度為O(nlogn),通常優(yōu)于冒泡排序。
冒泡排序:
public static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i< n - 1; i++) { for (int j = 0; j< n - i - 1; j++) { if (arr[j] >arr[j + 1]) { swap(arr, j, j + 1); } } } } public static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }
冒泡排序的實現(xiàn)方法比較簡單,基本思路是從第一個元素開始,兩兩比較相鄰元素的大小,如果發(fā)現(xiàn)前一個元素大于后一個元素,就交換這兩個元素的位置。這樣一輪下來,最大的元素就像氣泡一樣"冒"到了數(shù)組的最后面。然后對剩下的元素重復(fù)這個過程。
冒泡排序的時間復(fù)雜度為O(n^2),通常比快速排序慢。
下一篇byte 輸出 php