Junior — Middle
Моъйӣ кардан ба алгоритмҳои классикии асосӣ ва хусусиятҳои онҳо?
sobes.tech AI
Ҷавоб аз AI
Муҳим классик алгоритмлар ва уларнинг хусусиятлари:
-
Тартиблаш:
- Пуфур (Bubble Sort) — оддий, аммо самарасиз (O(n²)), ўрганиш учун мўлжалланган.
- Ичкига қўшиш (Insertion Sort) — деярли тартибланган маълумотлар учун самарали.
- Тез тартиблаш (Quick Sort) — ўртача тез (O(n log n)), аммо энг ёмон ҳолатда O(n²).
- Қўшилиш тартиблаш (Merge Sort) — барқарор, кафолатланган O(n log n), қўшимча хотира талаб қилади.
-
Қидириш:
- Чизиқли қидириш — оддий, аммо секин (O(n)).
- Иккилик қидириш — тез (O(log n)) тартибланган массивлар учун.
-
Граф алгоритмлари:
- Чуқурликда қидириш (DFS) ва енгликда қидириш (BFS) — графни ўтказиш.
- Дейкстра алгоритми — неотрицателни вазнларга эга графда энг қисқа йўлни топиш.
-
Рекурсия ва динамик дастурлаш:
- Қайталанадиган кичик муаммоларни ҳал қилиш учун, масалан, Fibonacci рақамларини ҳисоблаш, рюкзак муаммоси.
-
Гридий алгоритмлар:
- Локал оптимал қарорлар қабул қилади, масалан, Kruskal алгоритми минимал ўрмон учун.
misol: C#да тез тартиблаш
void QuickSort(int[] arr, int left, int right) {
if (left >= right) return;
int pivot = arr[(left + right) / 2];
int i = left, j = right;
while (i <= j) {
while (arr[i] < pivot) i++;
while (arr[j] > pivot) j--;
if (i <= j) {
int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp;
i++; j--;
}
}
QuickSort(arr, left, j);
QuickSort(arr, i, right);
}