Middle — Senior
Qual è la complessità degli algoritmi di ordinamento?
sobes.tech AI
Risposta dell'AI
La complessità degli algoritmi di ordinamento viene generalmente valutata in termini di tempo e memoria.
- Bubble Sort: tempo — O(n²), memoria — O(1). Semplice, ma inefficiente per grandi quantità di dati.
- Insertion Sort: tempo — O(n²) nel peggiore, O(n) nel migliore (array quasi ordinato), memoria — O(1).
- Merge Sort: tempo — O(n log n) in ogni caso, memoria — O(n) a causa di un array aggiuntivo.
- Quick Sort: tempo medio — O(n log n), peggiore — O(n²), memoria — O(log n) a causa della ricorsione.
- Heap Sort: tempo — O(n log n), memoria — O(1).
Esempio di Quick Sort in Java:
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
private static int partition(int[] arr, int low, int high) {
int pivot = arr[high];
int i = low - 1;
for (int j = low; j < high; j++) {
if (arr[j] < pivot) {
i++;
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
int temp = arr[i + 1];
arr[i + 1] = arr[high];
arr[high] = temp;
return i + 1;
}