Java 中有許多種排序算法,其中較為常見的是快速排序和冒泡排序。本文將會詳細介紹這兩種排序算法的原理與實現方法。
快速排序
快速排序是一種基于分治法的排序算法,它的基本思想是通過一趟排序將待排記錄分隔成獨立的兩部分,其中一部分記錄的關鍵字都比另一部分記錄的關鍵字小,然后分別對這兩部分記錄繼續進行排序,以達成整個序列有序。
public static void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int temp;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
上面是一個快速排序的函數實現,它使用了遞歸來實現分治的操作。函數接受三個參數,分別代表待排序數組、待排序序列的起始下標和終止下標。算法的時間復雜度為 O(nlogn)。
冒泡排序
冒泡排序是一種基本的排序算法,它通過按照順序遍歷數組并多次比較相鄰兩個元素的值來對數組進行排序,每次遍歷過程中,會將當前最大的元素沉到數組底部,然后繼續進行下一輪遍歷。
public static void bubbleSort(int[] arr) {
int temp;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
上面是一個冒泡排序的函數實現。函數接受一個待排序數組作為參數。算法的時間復雜度為 O(n2)。
上一篇css以什么為基礎