Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Пузырьковая сортировка: почему она не работает с числами?

Delphi , Базы данных , Сортировка и Фильтр

Пузырьковая сортировка (Bubble Sort) — это простой алгоритм сортировки, который работает путем сравнения соседних элементов и повторения этого процесса до тех пор, пока список не будет полностью отсортирован. Однако, когда дело доходит до сортировки чисел, хранящихся в виде строк в списке, пузырьковая сортировка может давать неожиданные результаты.

Проблема заключается в том, что пузырьковая сортировка сравнивает элементы как строки, а не как числа. В результате, при сравнении строк '20' и '3', '20' считается большим, потому что '2' больше '3'. Это приводит к неправильному порядку сортировки.

Чтобы исправить это, вам нужно либо преобразовывать строки в числа перед сортировкой, либо использовать другой алгоритм сортировки, который может работать с числами.

Вот пример кода на Object Pascal (Delphi), который демонстрирует, как использовать пузырьковую сортировку для сортировки чисел, хранящихся в виде строк в списке:

program BubbleSortStrings;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  System.Generics.Collections;

var
  StringList: TStringList;
  Temp: string;
  IsSorted: Boolean;
  I, J: Integer;

begin
  StringList := TStringList.Create;
  StringList.Add('18');
  StringList.Add('20');
  StringList.Add('3');
  StringList.Add('44');
  StringList.Add('53');

  // Пузырьковая сортировка
  repeat
    IsSorted := True;
    for I := StringList.Count - 1 downto 1 do
    begin
      if StringList[I - 1] > StringList[I] then
      begin
        Temp := StringList[I - 1];
        StringList[I - 1] := StringList[I];
        StringList[I] := Temp;
        IsSorted := False;
      end;
    end;
  until IsSorted;

  // Вывод отсортированного списка
  for J := 0 to StringList.Count - 1 do
    Writeln(StringList[J]);

  StringList.Free;
  Readln;
end.

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

Если вы хотите использовать другой алгоритм сортировки, который может работать с числами, вы можете рассмотреть использование встроенной функции сортировки списка строк TStringList.Sort. Чтобы использовать эту функцию, вам нужно будет либо преобразовывать строки в числа перед сортировкой, либо использовать пользовательскую функцию сравнения, которая сравнивает элементы как числа.

Создано по материалам из источника по ссылке.

Пузырьковая сортировка может давать неправильные результаты при сортировке чисел, представленных в виде строк, из-за сравнения строк, а не чисел.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Сортировка и Фильтр ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-08-02 10:36:26/0.0058398246765137/0