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) # Ռեկուրսիվ սորտավորում և միացում