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

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

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

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

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

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

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

Пузырьковая сортировка (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.