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

•  TDictionary Custom Sort  508

•  Fast Watermark Sources  874

•  3D Designer  1 804

•  Sik Screen Capture  1 457

•  Patch Maker  1 460

•  Айболит (remote control)  1 388

•  ListBox Drag & Drop  1 159

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

•  Графические эффекты  1 337

•  Рисование по маске  1 275

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

•  Canvas Drawing  963

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

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

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

•  Paint on Shape  486

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

•  Головоломка Paletto  659

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

•  Пазл Numbrix  607

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

•  Игра HIP  551

•  Игра Go (Го)  522

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

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

•  Генератор лабиринта  560

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

•  HEX View  596

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

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

 
скрыть


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

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



Сортировка StringGrid с целыми значения




 program H;

 uses WinCrt, SysUtils;

   const
     min = 10;
     max = 13;
     maxHeap = 1 shl max;

   type
     heap = array [1..maxHeap] of integer;
     heapBase = ^heap;

   var
     currentSize, heapSize: integer;
     A: heapBase;

   procedure SwapInts (var a, b: integer);
   var
     t: integer;
   begin
     t := a;
     a := b;
     b := t
   end;

   procedure InitHeap (size: integer);
   var
     i: integer;
   begin
     heapSize := size;
     currentSize := size;
     Randomize;
     for i := 1 to size do
       A^[i] := Random(size) + 1;
   end;

   procedure Heapify (i: integer);
   var
     left, right, largest: integer;
   begin
     largest := i;
     left := 2 * i;
     right := left + 1;
     if left <= heapSize then
       if A^[left] > A^[i] then
         largest := left;
     if right <= heapSize then
       if A^[right] > A^[largest] then
         largest := right;
     if largest <> i then
       begin
         SwapInts (A^[largest], A^[i]);
         Heapify (largest)
       end
   end;

   procedure BuildHeap;
   var
     i: integer;
   begin
     for i := heapSize div 2 downto 1 do
       Heapify (i)
   end;

   procedure HeapSort;
   var
     i: integer;
   begin
     BuildHeap;
     for i := currentSize downto 2 do
       begin
         SwapInts (A^[i], A^[1]);
         dec (heapSize);
         Heapify (1)
       end
   end;

 type
   TAvgTimes = array [min..max] of TDateTime;
 var
   sTime, eTime, tTime: TDateTime;
   i, idx, size: integer;
   avgTimes: TAvgTimes;


 begin
   tTime := 0;
   i := min;
   size := 1 shl min;
   new (A);
   while i <= max do
     begin
       for idx := 1 to 10 do
         begin
           InitHeap (size);
           sTime := Time;
           HeapSort;
           eTime := Time;
           tTime := tTime + (eTime - sTime)
         end;
       avgTimes[i] := tTime / 10.0;
       inc (i);
       size := size shl 1;
     end;
 end.





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

Сортировка методом Хоара

Сортировка списка

DBLookupComboBox in StringGrid

Cell hint in StringGrid

 

CheckBox in StringGrid

Components in StringGrid

Сапер StringGrid

StringGrid Decoration

 

TStringGridCheker

TQGRID Perfect StringGrid

OwnerDraw StringGrid




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

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram