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

Быстрая сортировка (англ. Quick Sort) – алгоритм сортировки, который использует принцип «разделяй и властвуй». Он считается одним из самых быстрых алгоритмов сортировки среди всех известных сегодня.

Основная идея алгоритма заключается в том, что из списка элементов выбирается один элемент (обычно первый), который называется опорным. Затем остальные элементы массива сравниваются с этим элементом и на основе этого они разделяются на две группы – больше, чем опорный элемент, и меньше или равны опорному элементу. Каждая группа сортируется отдельно. Операция разделения выполняется рекурсивно, пока все подмассивы не будут отсортированы.

Пример кода на языке С++:


#include  
using namespace std; 
  
void quickSort(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) { 
            swap(arr[i], arr[j]); 
            i++; 
            j--; 
        } 
    } 
  
    // рекурсивная сортировка каждой группы 
    if (left < j) 
        quickSort(arr, left, j); 
    if (i < right) 
        quickSort(arr, i, right); 
} 
  
int main() { 
    int arr[] = {6, 2, 1, 8, 7, 3, 5, 4}; 
    int size = sizeof(arr) / sizeof(arr[0]); 
    
    cout << "Unsorted array n:"; 
    for (int i = 0; i < size; i++) 
        cout << arr[i] << " "; 
    
    quickSort(arr, 0, size - 1); // вызов функции сортировки 
  
    cout << endl << "Sorted array n:"; 
    for (int i = 0; i < size; i++) 
        cout << arr[i] << " "; 
    
    return 0; 
} 

В данном примере мы объявляем функцию `quickSort`, принимающую указатель на массив и индексы начала (`left`) и конца (`right`) обрабатываемой части массива. Первым делом мы выбираем опорный элемент `pivot`, в примере это центральный элемент.

Затем мы проходим по всем элементам подмассива и перемещаем элементы в нужные группы, используя два указателя `i` и `j`, которые проходят массив справа налево и слева направо соответственно. Элементы меньше опорного перемещаются в левую группу, а больше – в правую.

Мы продолжаем процесс, пока `i` и `j` не пересекутся. Затем мы вызываем рекурсивно функцию `quickSort` для каждой из двух подгрупп (левой и правой), пока все элементы не будут отсортированы.

В конечном итоге, функция `main` вызывает функцию `quickSort` с указателем на массив и начальным и конечным индексами, и затем выводит отсортированный массив на экран.

Таким образом, быстрая сортировка предлагает эффективный способ сортировки больших объемов данных, и широко применяется в области программирования.

Похожие вопросы на: "быстрая сортировка c "

Decode: защита и восстановление ваших данных
Java тернарный оператор: как использовать его в вашем коде
Flex Grow: Полное руководство по использованию свойства flex-grow в CSS
CSS Uppercase: Tips and Tricks to Make Your Text Stand Out
Oracle Case: Real-Life Examples and Best Practices
Setting up and configuring your Speedport IP router
Btn: Всё, что вам нужно знать о кнопках на сайте
SCP протокол: безопасная передача данных через сеть
<h1>Double Check - проверьте информацию, чтобы быть уверенным в ее достоверности
Visual Studio: лучшая среда разработки программного обеспечения