Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.11.2006, 16:31
ART ART вне форума
Продвинутый
 
Регистрация: 13.02.2006
Адрес: Магнитогорск
Сообщения: 669
Репутация: 14745
По умолчанию Сортировка

Кто нибудь может дать хорошие ссылки на виды сортировок? А Да! Какая самая быстрая?
Ответить с цитированием
  #2  
Старый 19.11.2006, 22:24
Аватар для Ross
Ross Ross вне форума
Активный
 
Регистрация: 15.10.2005
Адрес: Казань
Сообщения: 250
Репутация: 30
По умолчанию

Сокорость звисит от объёма, есть алгоритмы, которые хорошо подходят для небольших массивов (например), а есть алгоритмы, которые эффективны для больших размеров массивов. Могу скинуть алгоритмы сортировок (на почтовый ящичек), я когда учил САОД их делал.
Ответить с цитированием
  #3  
Старый 19.11.2006, 23:53
Аватар для Rom@NS
Rom@NS Rom@NS вне форума
Прохожий
 
Регистрация: 05.11.2006
Адрес: Россия
Сообщения: 18
Репутация: 10
По умолчанию

Самая быстрая сортировка Хоара или она еще известна как "Быстрая сортировка"(кстати она не даром так названа и относится к улучшенным методам сортировок).Хорошо работает на больших объемах данных, а если ее скрестить еще с каким нибудь обычным методом(типа пузырька или простыми вставками,на крайний случай простым выбором), то будет вообще замечательно(хотя смотря как спаришь их)
есть у меня примерчик такого скрещивания:

unit Sorts;

interface
const n=10000; min=100;
Type
Tindex=1..n;
Tarray=array[Tindex]of integer;
procedure Simple_Choice(var A:TArray;down,Up:integer);
procedure Quick_Rec(var A:TArray;n:integer);




implementation


uses grfunc_;
procedure Simple_Choice(var A:TArray;down,up:integer);
var i,j,k:Integer;
Elem:Integer;
begin
for j:=Up downto down+1 do
begin
{ищем максимум среди элементов от j до 1
местоположение максимального элемента запоминается в переменной i}
i:=j;
for k:=j-1 downto down do
if A[i]<A[k]
then i:=k;
{i и j меняются местами}
elem:=A[j];
A[j]:=A[i];
A[i]:=elem;
count:=count+1;
end;
end;


procedure Quick_Rec(var A:TArray;n:integer);
procedure QuickSort(left,right:Integer);
var i,j:integer;
Elem:Integer;
begin
{если есть что сортировать}
if left<right
then
begin
{запоминаем указатель на левый и правый сравниваемые элементы}
i:=left;j:=right;
{до тех пор пока указатели не пересекутся}
while i<j do
begin
{ищем элемент справа, который был бы меньше, чем элемент слева}
while (i<j) and (A[j]>=A[i]) do j:=j-1;
//меняем местами
Elem:=A[i];
A[i]:=A[j];
A[j]:=Elem;
count:=count+1;
{ищем эелемнт слева, который был бы больше, элемент справа}
while (i<j)and(A[j]>=A[i])do i:=i+1;
//меняем местами
Elem:=A[i];
A[i]:=A[j];
A[j]:=Elem;
end;

//сортируем левую часть
if (i-1)-left<min
then
Simple_Choice(A,left,i-1)
else
QuickSort(left,i-1);

//сортируем правую часть
if right-(j+1)<min
then
Simple_Choice(a,j+1,right)
else
QuickSort(j+1,right);
end;
end;
begin
QuickSort(1,N);
end;
end.


Вообще сортировки в вирте не плохо описаны, там и сложность алгоритмов указана и скорость относительно друг друга!можно кнута почитать, там по внешним сортировкам кое что есть.
__________________
VSU, AMM, Software and administration of information systems
We are the best among the best!
Ответить с цитированием
  #4  
Старый 26.11.2006, 20:56
Аватар для AXS
AXS AXS вне форума
Новичок
 
Регистрация: 26.11.2006
Адрес: РК г. Талдыкорган
Сообщения: 67
Репутация: 15
По умолчанию

Если это БД на базе Acsess то

UserForm.ADOTable1.Sort:='Name ASC'

где Name - Имя поля по которому сортировать, а ASC - по возрастанию (DSC по убыванию)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:25.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter