Знакомство с сортировкой

Сортиро́вка (англ. sorting — классификация, упорядочение) — последовательное расположение или разбиение на группы чего-либо в зависимости от выбранного критерия. Мы часто распологаем в определенном порядке некоторые данные: список учеников класса, построение на уроке физкультуры и во многих других случаях.

Сортировка массива — это процесс распределения всех элементов массива в определенном порядке. Алгоритмов сортировки существует великое множество.

Про сортировку

Пузырьковая сортировка (Bubble Sort)

Сортировка выбором (Selection sort)

Быстрая сортировка (Quick sort)

Пузырьковая сортировка (Python)

        # Реализация сортировки пузырьком на языке программирования Python с помощью циклов for
        # 13:39 25.09.2025

        from random import randint
        
        N = 5 # количество элементов в списке
        a = []
        for i in range(N):
            a.append(randint(1, 99))
        print(a, '- неотсортированный список') # вывод исходного неотсортированного списка
        
        print()
        for k in range(N):
            print(' ', k, end=' ')
        print()
        
        # Сама сортировка методом "пузырька"
        for i in range(N-1):
            for j in range(N-1-i):
                if a[j] > a[j+1]:
                    a[j], a[j+1] = a[j+1], a[j]
                    print(a, end=' ')
                    print(f'обмен {a[j]} и {a[j+1]}')
            
        print()
        print(a, '- отсортированный список') # вывод отсортированного списка
        
    

Это НЕ пузырьковая сортировка

        # 14:18 25.09.2025
        # для ленивых
        data = [5, 1, 4, 3]
        sorted_data = sorted(data)
        print(sorted_data)      # Вывод: [1, 3, 4, 5]
        print(data)             # Вывод: [5, 1, 4, 3] (исходный список)
    

Подробнее...

Пузырьковая сортировка (PascalABC.NET)

        program Bubble_Sort;
        // 10:41 12.03.2023
        var
          a: array of integer; // динамический массив
        begin
          var n := ReadInteger('Количество элементов > ');
          a := new integer[n]; // начальный индекс = 0
          for var i := 0 to N - 1 do {заполнение массива}
            a[i] := Random(0, 100);
          println('Исходный массив:', a);
          Println(' *** Сортировку начинаем >>');
          for var i := 0 to N - 1 do
          begin
          { если массив УЖЕ отсортирован после очередного
            цикла - flag останется true (перестановки
            элементов массива не произойдет) и можно прервать
            дальнейшую итерацию
          }
            var flag := true;
            for var j := 0 to N - 2 - i do
            begin
              if A[j] > A[j + 1] then 
              begin
                Swap(A[j], A[j + 1]);
                flag := false; //обмен состоялся!
              end;
          // обмена не было, заканчиваем сортировку
              if flag then continue;
            end;
            println(A);
            Println($'Проход № {i+1} завершен');
            if flag then // завершаем сортировку
            begin
              println('Отсортированный массив >>', a);
              exit;
            end;
          end;
        end.
    

The solution is not optimal. Why?

         // 11:04 13.03.2023
         var
            mas: array[1..10] of integer;
         begin
           for var k := 1 to 10 do
             mas[k] := random(10, 99);
           println(mas); 
           for var i := 1 to 9 do 
           begin
             for var k := 1 to 10 - i do
               if mas[k] > mas[k + 1]
                 then swap(mas[k], mas[k + 1]);
             println(mas);
           end;
         end.
        

This is not bubble sort

        // 13:10 12.03.2023
        // для ленивых ;)
        var
           a: array of integer; // динамический массив
        begin
           var n := ReadInteger('Количество элементов > ');
           a := new integer[n]; // начальный индекс = 0
           for var i := 0 to N - 1 do {заполнение массива}
              a[i] := Random(0, 100);
           println('Исходный массив >>', a);
           Sort(a); // по возрастанию
           println('Отсортированный массив >>', a);
        end.