Sobes.tech
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) — გრაფის შემოვლა.
    • დაიკსტრის ალგორითმი — ყველაზე მოკლე გზა ნეგატიური წონების გარეშე გრაფში.
  • რეკურსია და დინამიური პროგრამირება:

    • გამოიყენება პრობლემების გადასაჭრელად, სადაც ქვესაშუალებები გადაკვეთილია, მაგალითად, ფიბონაჩჩის რიცხვების გამოთვლა, ზურგჩანთის პრობლემა.
  • გრედი ალგორითმები:

    • იღებენ ადგილობრივ ოპტიმალურ გადაწყვეტილებებს, მაგალითად, კრუსკალის ალგორითმი მინიმალური ხისათვის.

მაგალითი: სწრაფი სორტირება 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);
}