Sobes.tech
Back to questions
Junior — Middle
86

Какой алгоритм сортировки считается наиболее эффективным для общего использования?

Companies where asked
Samsung Research CenterSamsung Research Center

Answer from AI

sobes.tech AI

Наиболее эффективным и широко используемым алгоритмом сортировки для общего применения считается QuickSort (быстрая сортировка). Он имеет среднюю временную сложность O(n log n) и обычно работает быстрее других алгоритмов на практике благодаря хорошей локальности данных и простоте реализации.

Однако стоит учитывать, что в худшем случае QuickSort может работать за O(n²), поэтому в некоторых реализациях используют гибридные подходы, например, переключение на сортировку вставками для маленьких массивов.

Пример использования QuickSort на C++:

#include <iostream>
#include <vector>

void quickSort(std::vector<int>& arr, int left, int right) {
    int i = left, j = right;
    int pivot = arr[(left + right) / 2];

    while (i <= j) {
        while (arr[i] < pivot) i++;
        while (arr[j] > pivot) j--;
        if (i <= j) {
            std::swap(arr[i], arr[j]);
            i++; j--;
        }
    }

    if (left < j) quickSort(arr, left, j);
    if (i < right) quickSort(arr, i, right);
}

int main() {
    std::vector<int> data = {3, 6, 8, 10, 1, 2, 1};
    quickSort(data, 0, data.size() - 1);

    for (int num : data) {
        std::cout << num << " ";
    }
    return 0;
}