сортировка массива

Тема в разделе "Delphi - FAQ", создана пользователем GreenSnake, 18 май 2004.

Статус темы:
Закрыта.
  1. GreenSnake

    GreenSnake Гость

    буду краток
    ЛЮДИ ПОМОГИТЕ!!!!!!
    срочно!!!
    как в Delphi отсортировать массив целых чисел методом Sort от Tlist,
    в хэлпе есть пример но я так и не понял как мне его подключить применимо к своей работе

    желательно текст

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

    Maniacosaur Гость

    Начнем, пожалуй.
    Код (Text):
    function CompareInt(Item1, Item2: Pointer): Integer;
    begin
    Result:=0;
    if Integer(Item1)>Integer(Item2) then
     Result:=1
    else
     if Integer(Item1)<Integer(Item2) then
      Result:=-1;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    List1.Sort(@CompareInt);
    end;
    Так как класс Tlist в общем случае достаточно универсальное средство для организации динамических массивов, то заранее не известно (классу), какого типа он будет хранить данные. Потому и метод сортировки, хоть и есть, но без твоей помощи он не справится. Потому в качестве параметра метод Sort принимает адрес функции, которая должна "уметь" сравнивать два элемента твоего массива.
    Так как у тебя массив содержит ценые числа, то функцию, которая будет сравнивать два элемента массива я назвал CompareInt (по аналогии с хелпом :) ).
    Она возвращает -1, если Item1 < Item2; 0, если Item1=Item2; 1, если Item1>Item2.

    Далее просто в метод Sort передаем в качестве параметра адрес на эту функцию.

    И все.
    Не знаю, понятно ли объяснил, так как объяснять то я вообще не умею:)
     
  3. Guest_GreenSnake

    Guest_GreenSnake Гость

    Maniacosaur
    большое спасибо но по сути всё это есть в хэлпике, вот я не знаю как этим способом массив отсортировать в лист перегнать чтоли? а если массив большой это же дофига времени мне бы примерный код этого дела....
    но все равно спасибо и на этом...
     
  4. Maniacosaur

    Maniacosaur Гость

    Дело в том, что метод Sort класса Tlist сортирует только данные, которые объект в себе содержит. Так что либо перегоняй все это дело в TList, либо писать самому функцию.
     
  5. OLJ

    OLJ Гость

    Не может ли кто-нибудь помочь?
    Мне нужен какой-либо интересный способ сортировки в Паскале, исключая стандартные ("сорт-ка вставкой", "пузырька", "сорт-ка выбором") :rolleyes:
     
  6. Barmutik

    Barmutik Гость

    Вот тут есть списочек алгоритмов с их описаниями... можете выбрать что Вам больше нравится:

    Алгоритмы сортировок
     
  7. Frogs2009

    Frogs2009 Гость

    хм, а ты не можешь написать сортироку вставкой??? блин,если можешь напиши пожалуйста!
     
  8. astronom

    astronom Гость

    У Кнута по этому поводу есть очень интересный томик его Искусства программирования. ;)
     
  9. astronom

    astronom Гость

    Ну мало ли. :lol: Да и Кнута упомянуть лишний раз - святое дело.
     
  10. Frogs2009

    Frogs2009 Гость

    нет, просто очень надо, скоро практика закончится, а делать не знаю как, помогли бы лучше! :)
     
  11. astronom

    astronom Гость

  12. Frogs2009

    Frogs2009 Гость

  13. antares

    antares Гость

    ..в воздухе веяло летней сессией.. :)
     
  14. Kraven

    Kraven Гость

    Помогите пожалуйста составить код программы для этой задачи:

    Сортировка простыми вставками . Дано действительную матрицу размером n*m . Упорядочить (переставить) строки матрицы по не убыванию сумм элементов строк.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей