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

  • Автор темы GreenSnake
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

GreenSnake

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

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

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

Maniacosaur

Гость
#2
Начнем, пожалуй.
Код:
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 передаем в качестве параметра адрес на эту функцию.

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

Guest_GreenSnake

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

Maniacosaur

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

OLJ

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

Frogs2009

Гость
#7
Не может ли кто-нибудь помочь?
Мне нужен какой-либо интересный способ сортировки в Паскале, исключая стандартные ("сорт-ка вставкой", "пузырька", "сорт-ка выбором") :lol:
хм, а ты не можешь написать сортироку вставкой??? блин,если можешь напиши пожалуйста!
 
A

astronom

Гость
#8
Не может ли кто-нибудь помочь?
Мне нужен какой-либо интересный способ сортировки в Паскале, исключая стандартные ("сорт-ка вставкой", "пузырька", "сорт-ка выбором") :lol:
У Кнута по этому поводу есть очень интересный томик его Искусства программирования. ;)
 
A

astronom

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

Kraven

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

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