Sobes.tech
Junior

რომელ სორტირების ალგორითმებს იცნობთ?

sobes.tech AI

პასუხი AI-სგან

ძირითადი სორტირების ალგორითმები:

  • Bubble Sort (ბუშტის სორტი): მარტივი, მაგრამ არასასურველი ალგორითმი, რომელიც მრავალჯერ გადის სიაზე, ცვლით მეზობელ ელემენტებს, თუ ისინი არასწორ წესრიგში არიან.
  • Selection Sort (შერჩევის სორტი): პოულობს არასორტირებულ ნაწილში ყველაზე პატარა (ან ყველაზე დიდი) ელემენტს და აყენებს მას დასაწყისში.
  • Insertion Sort (შენახვის სორტი): ეტაპობრივად აშენებს სორტირებულ სიას, ყოველი ახალი ელემენტის ჩასმა უკვე სორტირებულ ნაწილში საჭირო ადგილას.
  • Merge Sort (შერწყმის სორტი): რეკურსიული ალგორითმი, რომელიც ნაწილებს აყოფს, სორტირებს და შემდეგ აერთიანებს.
  • Quick Sort (სწრაფი სორტი): "გაანაწილე და მმართე" მეთოდი, რომელიც არჩევს საყრდენ ელემენტს (pivot) და გადანაწილებს ელემენტებს, რომ ნაკლები იყოს მარცხნივ, მეტი — მარჯვნივ. შემდეგ რეკურსიულია.
  • Shell Sort (შელ სორტი): გაუმჯობესება შერწყმის სორტზე, რომელიც იყენებს შედარებებს დიდი მანძილზე.
  • Heap Sort (ჰიპ სორტი): იყენებს მონაცემთა სტრუქტურას "კუპა" (heap) ეფექტური სორტირებისთვის.

არსებობს ნაკლებად გავრცელებული, მაგრამ ზოგიერთ შემთხვევაში ეფექტური ალგორითმები, როგორიცაა ითვლით სორტი (Counting Sort), რადიქსული სორტი (Radix Sort), ბლოკური სორტი (Bucket Sort).

ძირითადი ალგორითმების დროის სირთულე (საშუალო):

სორტირების ალგორითმი საშუალო დროის სირთულე
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 დამოკიდებულია ნაბიჯზე
Heap Sort O(n log n)

Python-ში სწრაფი სორტირების მაგალითი:

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]  # არჩევა პივოტის
    left = [x for x in arr if x < pivot]  # ნაკლები ელემენტები
    middle = [x for x in arr if x == pivot] # ტოლი ელემენტები
    right = [x for x in arr if x > pivot] # მეტი ელემენტები
    return quicksort(left) + middle + quicksort(right) # რეკურსიული სორტირება და გაერთიანება