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

Сортировка двух связанных списков по целочисленным значениям одного из них

Delphi , Синтаксис , Сортировка

Сортировка двух связанных списков по целочисленным значениям одного из них

Автор: ___Nikolay
WEB-сайт: http://delphiworld.narod.ru

procedure SortTwoListsByIntValues(lbNum, lbNames: TStrings);
var
  i, j, b_val, b_j: integer;
  b_val_name: string;
begin
  if lbNum.Count > 1 then
  begin
    for i := 0 to lbNum.Count - 2 do
    begin
      b_val := StrToInt(lbNum[i]);
      b_val_name := lbNames[i];
      b_j := i;
      for j := i + 1 to lbNum.Count - 1 do
      begin
        if StrToInt(lbNum[j]) < b_val then
        begin
          b_val := StrToInt(lbNum[j]);
          b_val_name := lbNames[j];
          b_j := j;
        end;
      end;
      lbNum[b_j] := lbNum[i];
      lbNum[i] := IntToStr(b_val);

      lbNames[b_j] := lbNames[i];
      lbNames[i] := b_val_name;
    end;
  end;
end;

Программный процесс SortTwoListsByIntValues, написанный на языке Delphi, сортирует два связанных списка (lbNum и lbNames) в соответствии с целочисленными значениями первого списка.

Описание кода:

  1. Процедура принимает два параметра типа TStrings, lbNum и lbNames, которые представляют собой два связанных списка.
  2. Если количество элементов в списке lbNum больше 1, процедура выполняет внутренний цикл, который проходит по каждому элементу списка.
  3. Для каждого элемента конвертирует строковое значение в целочисленное с помощью функции StrToInt и хранит его в переменной b_val.
  4. Также извлекает соответствующее строковое значение из списка lbNames и хранит его в переменной b_val_name.
  5. Процедура затем проходит по оставшимся элементам списка (начиная с i+1) и проверяет, если целочисленное значение каждого элемента меньше b_val. Если находит меньшее значение, обновляет b_val, b_val_name и b_j новыми значениями.
  6. Когда внутренний цикл завершается, процедура обменивает элементы индексов i и b_j в обоих списках.

Алгоритм, используемый в этом коде, - это простая реализация алгоритма пузырьковой сортировки, который не эффективен для больших данных. Более эффективный подход бы использование алгоритмов сортировки, таких как quicksort или mergesort.

Альтернативное решение с использованием встроенной функциональности Delphi:

procedure SortTwoListsByIntValues(lbNum, lbNames: TStrings);
begin
  lbNum.Sort;
  lbNum.Assign(lbNum); // присваивает отсортированный список себе самой
  lbNames.Sort; // сортирует второй список в соответствии с порядком сортировки первого списка
end;

В этом коде мы используем метод Sort класса TStringList, который реализует алгоритм сортировки. Вызов lbNum.Sort сортирует целочисленные значения в первом списке. Затем присваиваем отсортированный список себе самой с помощью Assign, чтобы сохранить оригинальные списки и создать новый отсортированный копию.

Затем вызываем lbNames.Sort, чтобы сортировать второй список в соответствии с порядком сортировки первого списка. Это обеспечивает синхронизацию двух списков и позволяет использовать их для дальнейшей обработки или отображения.

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

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-10-12 16:46:28/0.0039560794830322/0