Алгоритмы сортировки: пузырьковая сортировка и многое другое с примерами кода

Вот объяснение алгоритма пузырьковой сортировки на английском языке и пример кода. После этого я предоставлю вам несколько дополнительных алгоритмов сортировки.

Алгоритм пузырьковой сортировки.
Пузырьковая сортировка — это простой алгоритм сортировки, который многократно проходит по списку, сравнивает соседние элементы и меняет их местами, если они расположены в неправильном порядке. Этот процесс повторяется до тех пор, пока весь список не будет отсортирован. Название «пузырьковая сортировка» происходит от того, как более мелкие элементы «всплывают» вверху списка.

Вот пример алгоритма пузырьковой сортировки, реализованного на языке программирования C:

#include <stdio.h>
void bubbleSort(int arr[], int n) {
    int i, j;
    for (i = 0; i < n-1; i++) {
        for (j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}
int main() {
    int arr[] = {64, 34, 25, 12, 22, 11, 90};
    int n = sizeof(arr)/sizeof(arr[0]);
    bubbleSort(arr, n);
    printf("Sorted array: \n");
    for (int i=0; i < n; i++)
        printf("%d ", arr[i]);
    return 0;
}

Этот код отсортирует заданный массив, используя алгоритм пузырьковой сортировки. Результатом будет отсортированный массив: 11 12 22 25 34 64 90.

Дополнительные алгоритмы сортировки.
Помимо пузырьковой сортировки, вы можете изучить множество других алгоритмов сортировки. Вот несколько примеров:

  1. Сортировка вставками:

    • Язык: Python
    • Код:

      def insertionSort(arr):
       for i in range(1, len(arr)):
           key = arr[i]
           j = i-1
           while j >=0 and key < arr[j] :
                   arr[j+1] = arr[j]
                   j -= 1
           arr[j+1] = key
  2. Сортировка выбором:

    • Язык: Java
    • Код:

      public class SelectionSort {
       public static void selectionSort(int[] arr) {
           int n = arr.length;
           for (int i = 0; i < n-1; i++) {
               int minIndex = i;
               for (int j = i+1; j < n; j++) {
                   if (arr[j] < arr[minIndex])
                       minIndex = j;
               }
               int temp = arr[minIndex];
               arr[minIndex] = arr[i];
               arr[i] = temp;
           }
       }
      }
  3. Быстрая сортировка:

    • Язык: C++
    • Код:

      #include<iostream>
      using namespace std;
      int partition(int arr[], int low, int high) {
       int pivot = arr[high];
       int i = (low - 1);
       for (int j = low; j <= high - 1; j++) {
           if (arr[j] < pivot) {
               i++;
               swap(arr[i], arr[j]);
           }
       }
       swap(arr[i + 1], arr[high]);
       return (i + 1);
      }
      void quickSort(int arr[], int low, int high) {
       if (low < high) {
           int pi = partition(arr, low, high);
           quickSort(arr, low, pi - 1);
           quickSort(arr, pi + 1, high);
       }
      }
      int main() {
       int arr[] = {64, 34, 25, 12, 22, 11, 90};
       int n = sizeof(arr) / sizeof(arr[0]);
       quickSort(arr, 0, n - 1);
       cout << "Sorted array: \n";
       for (int i = 0; i < n; i++)
           cout << arr[i] << " ";
       return 0;
      }