Недавно добавленные исходники

•  TDictionary Custom Sort  3 225

•  Fast Watermark Sources  2 990

•  3D Designer  4 750

•  Sik Screen Capture  3 259

•  Patch Maker  3 467

•  Айболит (remote control)  3 528

•  ListBox Drag & Drop  2 903

•  Доска для игры Реверси  80 768

•  Графические эффекты  3 843

•  Рисование по маске  3 171

•  Перетаскивание изображений  2 544

•  Canvas Drawing  2 672

•  Рисование Луны  2 500

•  Поворот изображения  2 091

•  Рисование стержней  2 119

•  Paint on Shape  1 524

•  Генератор кроссвордов  2 182

•  Головоломка Paletto  1 730

•  Теорема Монжа об окружностях  2 158

•  Пазл Numbrix  1 649

•  Заборы и коммивояжеры  2 016

•  Игра HIP  1 262

•  Игра Go (Го)  1 200

•  Симулятор лифта  1 421

•  Программа укладки плитки  1 177

•  Генератор лабиринта  1 512

•  Проверка числового ввода  1 297

•  HEX View  1 466

•  Физический маятник  1 322

•  Задача коммивояжера  1 357

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Двоичный поиск для TListView



Оформил: DeeCo

{+------------------------------------------------------------ 
| Function ListviewBinarySearch 
| 
| Parameters : 
| listview: listview to search, assumed to be sorted, must 
| be <> nil. 
| Item : item caption to search for, cannot be empty 
| index : returns the index of the found item, or the 
| index where the item should be inserted if it is not 
| already in the list. 
| Returns : True if there is an item with the passed caption 
| in the list, false otherwise. 
| Description: 
| Uses a binary search and assumes that the listview is sorted 
| ascending on the caption of the listitems. The search is 
| case-sensitive, like the default alpha-sort routine used by 
| the TListview class. 
| Note: 
| We use the lstrcmp function for string comparison since it 
| is the function used by the default alpha sort routine. If 
| the listview is sorted by another means (e.g. OnCompare event) 
| this needs to be changed, the comparison method used must 
| always be the same one used to sort the listview, or the 
| search will not work! 
| Error Conditions: none 
| Created: 31.10.99 by P. Below 
+------------------------------------------------------------}

 function ListviewBinarySearch(listview: TListview; const Item: string;
   var Index: Integer): Boolean;
 var
   First, last, pivot, res: Integer;
 begin
   Assert(Assigned(listview));
   Assert(Length(item) > 0);

   Result := False;
   Index  := 0;
   if listview.Items.Count = 0 then Exit;

   First := 0;
   last  := listview.Items.Count - 1;
   repeat
     pivot := (First + last) div 2;
     res   := lstrcmp(PChar(item), PChar(listview.Items[pivot].Caption));
     if res = 0 then
     begin
       { Found the item, return its index and exit. }
       Index  := pivot;
       Result := True;
       Break;
     end { If }
     else if res > 0 then
     begin
       { Item is larger than item at pivot }
       First := pivot + 1;
     end { If }
     else
     begin
       { Item is smaller than item at pivot }
       last := pivot - 1;
     end;
   until last < First;
   Index := First;
 end; { ListviewBinarySearch }




Похожие по теме исходники

Поисковик

Поиск символа

Поиск файлов

Поиск открытых файлов

 

Findup (поиск дублей)

Дейкстра: поиск кратчайшего пути

Нейросеть для распознавания образов

Механизм станка качалки для нефти

 

Весы для взвешивания

Кувшины для воды

Доска для игры Реверси




Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте