Quick Sort
Le tri rapide est un algorithme qui utilise le fameux algorithme de tri "Divide and Conquer". C'est tellement célèbre que si vous n'avez pas entendu ce qu'est le tri rapide, ici pour référence.
Solution
Runtime Complexity O(nlogn) Si vous choisissez pivot comme l'extrême gauche du tableau
Memory Complexity O(logn) Triez le côté droit et le côté gauche séparément du pivot. À ce stade, puisqu'une fonction récursive est utilisée Il est O (logn) car il consomme de la mémoire sur la pile.
quickSort.java
class quickSort{
public int partition(int[] arr, int low, int high) {
int pivot_value = arr[low];
int i = low;
int j = high;
while (i < j) {
while( i <= high && arr[i] <= pivot_value) i++;
while(arr[j] > pivot_value) j--;
if (i < j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
arr[low] = arr[j];
arr[j] = pivot_value;
return j;
}
public void quick_sort_recursive(int[] arr, int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quick_sort_recursive(arr, low, pivot - 1);
quick_sort_recursive(arr, pivot + 1, high);
}
}
public void quick_sort(int[] arr) {
quick_sort_recursive(arr, 0, arr.length - 1);
}
}
Recommended Posts