Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2018.03.04;
Скачать: [xml.tar.bz2];

Вниз

Сортировка TList   Найти похожие ветки 

 
Макака   (2016-02-28 18:08) [0]

Есть TList<integer>. TList.Sort сортирует по возрастанию, как сделать наоборот?


 
DVM ©   (2016-02-28 19:00) [1]

Функцию сортировки свою сделать


 
Макака   (2016-02-28 19:27) [2]

DVM, это и ежу понятно. В ТСтрингЛист всё просто было через TCustomSort (как хочешь так и сортируешь) а тут весь инет обрыл, везде в ТЛист объекты хранят не числа, хотя по сути в обоих случаях хранятся указатели на объекты. Короче мне очень сложно пока понять что к чему.


 
Макака   (2016-02-28 19:29) [3]

var List:TList<integer>;

function ListSort(Item1, Item2: Pointer): Integer;
begin

end;

begin
List:=TList<integer>.Create;
List.Add(1);
List.Add(4);
List.Add(3);
List.Sort(ListSort);
end;


 
Юрий Зотов ©   (2016-02-28 22:18) [4]

Используем тот факт, что Integer и Pointer занимают одинаковый размер памяти. То есть, Pointer можно трактовать как Integer, через приведение типа.
function CompareItemsAsInteger(Item1, Item2: Pointer): Integer;
var
 i1, i2: Integer;
begin
 i1 := Integer(Item1);
 i2 := Integer(Item2);
 if i1 > i2 then
   result := 1
 else
   if i1 < i2 then
     result := -1
   else
     result := 0
end;


 
Макака   (2016-02-28 22:23) [5]

Я сделал так


function ListSort(Item1, Item2: Pointer): Integer;
begin
if integer(item1)>=integer(item2) then result:=0 else result:=1;
end;

Похоже что одно и тоже.
У меня ошибка выходит "не актуальные параметры" в месте
List.Sort(ListSort);
С этого момента я начал шустрить по инету, но так и не понял из-за чего.


 
Юрий Зотов ©   (2016-02-28 22:31) [6]

http://docwiki.embarcadero.com/CodeExamples/XE8/en/Generics_Collections_TList_%28Delphi%29


 
Юрий Зотов ©   (2016-02-28 22:43) [7]

Эх, давно я с Delphi дела не имел - но похоже, что все проще: сначала List.Sort. затем List.Reverse.


 
Макака   (2016-02-28 22:48) [8]

Юрий Зотов, только что из твоего источника нашёл, спасибо!
А бинарный поиск в списке отсортированном по убыванию не робит?


 
Юрий Зотов ©   (2016-02-28 22:48) [9]

Вот тут все хорошо описано:
http://www.tdelphiblog.com/2009/07/2-generics-delphi-2009-win32-2.html


 
DVM ©   (2016-02-29 17:39) [10]


> Макака   (28.02.16 22:48) [8]
> Юрий Зотов, только что из твоего источника нашёл, спасибо!
>  
> А бинарный поиск в списке отсортированном по убыванию не
> робит?

А какой практический смысл от списка отсортированного в обратном порядке?
К списку же всегда можно обратиться задом-наперед.


 
DVM ©   (2016-02-29 18:05) [11]


> Макака   (28.02.16 22:48) [8]

Если бинарный поиск реализован грамотно, то он тоже опирается на функцию сравнения. И ему абсолютно фиолетово, в прямом или обратном порядке отсортирован список.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2018.03.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.003 c
2-1458222695
Новичок
2016-03-17 16:51
2018.03.04
Юниты


2-1456753183
gog
2016-02-29 16:39
2018.03.04
Переделать MessageDlg


2-1458382160
Валя
2016-03-19 13:09
2018.03.04
TreeView мультиселект


2-1457082837
guest
2016-03-04 12:13
2018.03.04
TOutlookApplication и задержки в аутлуке...


15-1470691802
Юрий
2016-08-09 00:30
2018.03.04
С днем рождения ! 9 августа 2016 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский