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