Sobes.tech
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