Junior
Milliseid sorteerimisalgoritme teate?
sobes.tech AI
Vastus AI-lt
Peamised sorteerimisalgoritmid:
- Bubble Sort (Vahu sorteerimine): Lihtne, kuid ebatõhus algoritm, mis läbib nimekirja mitu korda, vahetades naaberelemente, kui need on vales järjekorras.
- Selection Sort (Valiku sorteerimine): Leiab nimekirja sortimata osast väikseima (või suurima) elemendi ja asetab selle algusesse.
- Insertion Sort (Sisestamise sorteerimine): Aja jooksul ehitab ta sorteeritud nimekirja, sisestades iga uue elemendi juba sorteeritud osa õigele kohale.
- Merge Sort (Ühinemise sorteerimine): Rekursiivne algoritm, mis jagab nimekirja alamnimekirjadeks, sorteerib need ja ühendab tagasi.
- Quick Sort (Kiire sorteerimine): "Jaga ja valitse" meetod, mis valib põhielemendi (pivot) ja ümber korraldab elemendid nii, et väiksemad on vasakul ja suuremad paremal. Seejärel rakendub rekursiivselt alamnimekirjadele.
- Shell Sort (Shell sort): Parandab sisestamise sorteerimist, kasutades võrdlusi suuremate vahemaade vahel elementide vahel.
- Heap Sort (Kuhja sorteerimine): Kasutab andmestruktuuri "kuhja" (heap) tõhusaks sorteerimiseks.
Samuti on vähem levinud, kuid teatavatel juhtudel tõhusad algoritmid nagu loendamise sorteerimine (Counting Sort), radix sorteerimine (Radix Sort), ämbrisorteerimine (Bucket Sort).
Peamiste algoritmide täitmisaja (keskmiselt):
| Sorteerimisalgoritm | Keskmine täitmisaja aeg |
|---|---|
| Bubble Sort | O(n²) |
| Selection Sort | O(n²) |
| Insertion Sort | O(n²) |
| Merge Sort | O(n log n) |
| Quick Sort | O(n log n) |
| Shell Sort | Sõltub sammust |
| Heap Sort | O(n log n) |
Näide kiire sorteerimise rakendamisest Pythonis:
def quicksort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2] # Valime pivot
left = [x for x in arr if x < pivot] # Väiksemad elemendid
middle = [x for x in arr if x == pivot] # Võrdsed elemendid
right = [x for x in arr if x > pivot] # Suuremad elemendid
return quicksort(left) + middle + quicksort(right) # Rekursiivne sorteerimine ja ühendamine