Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: сортировка массива
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - FAQ
GreenSnake
буду краток
ЛЮДИ ПОМОГИТЕ!!!!!!
срочно!!!
как в Delphi отсортировать массив целых чисел методом Sort от Tlist,
в хэлпе есть пример но я так и не понял как мне его подключить применимо к своей работе

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

буду презнателен за любую помощь, но прошу зарание не утруждайте себя периписыванием здесь алгоритмов пузырьковой и других сортировок, нужна именно эта (см начало)
Maniacosaur
Начнем, пожалуй.
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 (по аналогии с хелпом wink.gif ).
Она возвращает -1, если Item1 < Item2; 0, если Item1=Item2; 1, если Item1>Item2.

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

И все.
Не знаю, понятно ли объяснил, так как объяснять то я вообще не умеюsmile.gif
Guest_GreenSnake
Maniacosaur
большое спасибо но по сути всё это есть в хэлпике, вот я не знаю как этим способом массив отсортировать в лист перегнать чтоли? а если массив большой это же дофига времени мне бы примерный код этого дела....
но все равно спасибо и на этом...
Maniacosaur
Дело в том, что метод Sort класса Tlist сортирует только данные, которые объект в себе содержит. Так что либо перегоняй все это дело в TList, либо писать самому функцию.
OLJ
Не может ли кто-нибудь помочь?
Мне нужен какой-либо интересный способ сортировки в Паскале, исключая стандартные ("сорт-ка вставкой", "пузырька", "сорт-ка выбором") unsure.gif
Barmutik
Вот тут есть списочек алгоритмов с их описаниями... можете выбрать что Вам больше нравится:

]]>Алгоритмы сортировок]]>
Frogs2009
Цитата(OLJ @ 26:04:2005, 16:02 ) *
Не может ли кто-нибудь помочь?
Мне нужен какой-либо интересный способ сортировки в Паскале, исключая стандартные ("сорт-ка вставкой", "пузырька", "сорт-ка выбором") unsure.gif

хм, а ты не можешь написать сортироку вставкой??? блин,если можешь напиши пожалуйста!
astronom
Цитата(OLJ @ 26:04:2005, 19:02 ) *
Не может ли кто-нибудь помочь?
Мне нужен какой-либо интересный способ сортировки в Паскале, исключая стандартные ("сорт-ка вставкой", "пузырька", "сорт-ка выбором") unsure.gif

У Кнута по этому поводу есть очень интересный томик его Искусства программирования. wink.gif
sax_ol
Frogs2009 и astronom Господа, не смущает, что топику уже больше 3 лет?
astronom
Ну мало ли. biggrin.gif Да и Кнута упомянуть лишний раз - святое дело.
Frogs2009
Цитата(sax_ol @ 14:06:2008, 08:44 ) *
Frogs2009 и astronom Господа, не смущает, что топику уже больше 3 лет?

нет, просто очень надо, скоро практика закончится, а делать не знаю как, помогли бы лучше! dry.gif
astronom
Frogs2009, как говорится, ВЫБИРАЙ: ]]>http://www.google.ru/search?complete=1&...%B9&spell=1]]>
wink.gif
Frogs2009
Цитата(astronom @ 15:06:2008, 17:45 ) *
Frogs2009, как говорится, ВЫБИРАЙ: ]]>http://www.google.ru/search?complete=1&...%B9&spell=1]]>
wink.gif

Спасибо тебе большое!!!!!! rolleyes.gif
antares
..в воздухе веяло летней сессией.. wink.gif
Kraven
Помогите пожалуйста составить код программы для этой задачи:

Сортировка простыми вставками . Дано действительную матрицу размером n*m . Упорядочить (переставить) строки матрицы по не убыванию сумм элементов строк.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.