Алгоритм быстрой сортировки на C++: полное руководство по эффективной сортировке

Вот реализация алгоритма быстрой сортировки на C++:

#include <iostream>
using namespace std;
// Function to swap two elements
void swap(int* a, int* b) {
    int t = *a;
    *a = *b;
    *b = t;
}
// Partition function to find the correct position of the pivot element
int partition(int arr[], int low, int high) {
    int pivot = arr[high];  // Choosing the last element as the pivot
    int i = (low - 1);  // Index of smaller element
    for (int j = low; j <= high - 1; j++) {
        // If the current element is smaller than or equal to the pivot
        if (arr[j] <= pivot) {
            i++;  // Increment index of smaller element
            swap(&arr[i], &arr[j]);
        }
    }
    swap(&arr[i + 1], &arr[high]);
    return (i + 1);
}
// Quicksort function
void quicksort(int arr[], int low, int high) {
    if (low < high) {
        int pi = partition(arr, low, high);  // Partitioning index
        // Recursively sort elements before and after the partition
        quicksort(arr, low, pi - 1);
        quicksort(arr, pi + 1, high);
    }
}
// Function to print an array
void printArray(int arr[], int size) {
    for (int i = 0; i < size; i++)
        cout << arr[i] << " ";
    cout << endl;
}
// Driver code
int main() {
    int arr[] = {10, 7, 8, 9, 1, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "Original array: ";
    printArray(arr, n);
    quicksort(arr, 0, n - 1);
    cout << "Sorted array: ";
    printArray(arr, n);
    return 0;
}

Этот код реализует алгоритм быстрой сортировки на C++. Функция swapиспользуется для замены двух элементов, а функция partitionвыбирает последний элемент в качестве опорного и переупорядочивает массив таким образом, чтобы все элементы, меньшие, чем опорный элемент, располагались перед ним. он, и все элементы, превышающие опорный элемент, размещаются после него. Функция quicksortрекурсивно вызывает себя для сортировки подмассивов до и после разделения. Функция printArrayиспользуется для печати элементов массива. В функции mainсоздается пример массива и печатаются исходный и отсортированный массивы.

Теперь перейдем к статье в блоге.

В мире информатики алгоритмы сортировки играют жизненно важную роль в эффективной организации данных и манипулировании ими. Одним из таких алгоритмов является Quicksort, известный своей скоростью и эффективностью сортировки больших наборов данных. В этой статье мы подробно рассмотрим алгоритм быстрой сортировки, предоставив пошаговое объяснение и примеры кода C++.

Методы:

  1. Метод 1. Базовая реализация быстрой сортировки. Этот метод охватывает фундаментальную реализацию алгоритма быстрой сортировки с использованием методов рекурсии и секционирования.

    // Insert the code example of the Quicksort implementation here
  2. Метод 2. Оптимизированная реализация быстрой сортировки. В этом методе обсуждаются различные оптимизации, которые можно применить для повышения производительности алгоритма быстрой сортировки, такие как выбор случайной опорной точки, реализация трехстороннего секционирования и использование сортировки вставками для небольших подмассивы.

    // Insert the code example of the optimized Quicksort implementation here
  3. Метод 3. Быстрая сортировка с выбором медианы из трех опорных точек. Этот метод вводит концепцию выбора опорного элемента как медианы трех элементов для повышения эффективности алгоритма быстрой сортировки.

    // Insert the code example of Quicksort with median-of-three pivot selection here
  4. Метод 4. Быстрая сортировка со схемой разделения Хоара. Этот метод исследует альтернативную схему разделения, называемую схемой разделения Хоара, которая предлагает другой подход к выбору опорной точки и разбиению массива.

    // Insert the code example of Quicksort with Hoare partition scheme here
  5. Метод 5. Быстрая сортировка связанных списков. В этом методе рассматривается, как можно адаптировать алгоритм быстрой сортировки для эффективной сортировки связанных списков с учетом ограничений связанных структур данных.

    // Insert the code example of Quicksort for linked lists here

Quicksort — это мощный алгоритм сортировки, предлагающий эффективный способ сортировки данных на C++. В этой статье мы рассмотрели несколько методов реализации алгоритма быстрой сортировки, от базовых реализаций до оптимизированных версий. Мы также обсудили варианты алгоритма, такие как использование медианного выбора из трех опорных точек и схемы разделения Хоара. Кроме того, мы рассмотрели, как можно адаптировать быструю сортировку для сортировки связанных списков. Понимая эти различные методы, вы можете выбрать наиболее подходящий подход для ваших конкретных случаев использования. Внедрение быстрой сортировки в ваши проекты C++ может значительно улучшить производительность сортировки и повысить общую эффективность.