Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

std::sort на делфи


Страницы:   1 2

анонимус ©   (2011-08-16 00:07:00) 

Есть на c++ такой код:

std::sort(edges, edges + num_edges);
где  num_edges - размер массива
     edges - массив структур:

typedef struct {
 float w;
 int a, b;
} edge;


почему к массиву прибавляется integer невкурил, но еджес объявляются так edge *edges

А вопрос - как это грамотно реализовать на делфи? Насколько я понял задача состоит в том, чтобы отсортировать массив по параметру w в структуре. Массивы огромны, надеюсь есть иные способы кроме как в цикле? ну вот как с++ есть же )


Sha   (2011-08-16 19:47:00) [1]

> анонимус   (16.08.11 13:53) [27]

Тебе удалось найти не самую лучшую реализацию быстрой сортировки.
Главный минус - неэффективная сортировка отсортированных данных.
Ищи еще.


Inovet   (2011-08-16 14:34:00) [2]

> [27] анонимус   (16.08.11 13:53)

Ну вот кто такой текст станет читать - глаза и мозг жалко. А сам как с ним работешь? Неужели, по твоему, форматирование не улучшает читаемость?


sniknik   (2011-08-16 14:31:00) [3]

> остановился я на этом:
зачем было так далеко лезть? QuickSort мог бы и в генофонде найти, хотя бы форматировано было бы получше...


анонимус   (2011-08-16 14:19:00) [4]

сегментация методом графов


RWolf   (2011-08-16 14:15:00) [5]

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


анонимус   (2011-08-16 13:53:00) [6]

остановился я на этом:

Program QuickSort;
Var A : array[1..1000] of integer;
N,T : integer;
Procedure Sort(p,q : integer); {p,q — индексы начала и конца сортируемой части массива}
Var i,j,r : integer;
Begin
if p<q then {массив из одного элемента тривиально упорядочен}
begin
r:=A[p];
i:=p-1;
j:=q+1;
while i<j do
begin
repeat
i:=i+1;
until A[i]>=r;
repeat
j:=j-1;
until A[j]<=r;
if i<j then
begin
T:=A[i];
A[i]:=A[j];
A[j]:=T;
end;
end;
Sort(p,j);
Sort(j+1,q);
end;
End;
Begin
{Определение размера массива A — N) и его заполнение}
…
{запуск сортирующей процедуры}
Sort(1,N);
{Вывод отсортированного массива A}
…
End.

только переделаю под себя http://skachivaem.ru/articles/50-delphi/223--delphi.html


анонимус   (2011-08-16 13:49:00) [7]

омг, массив в среднем размером 768 432 элементов. т.е. если юзать окно 1024*768 он собирается со скрина окна программы. Желательно скрины делать почаще и массивы не слабых размеров вообщем критично, чтобы на каждом этапе было максимальное быстродействие.


Inovet   (2011-08-16 12:39:00) [8]

> [24] Inovet ©   (16.08.11 12:38)

Не в ту ветку


Inovet   (2011-08-16 12:38:00) [9]

Это всё потому что inc синтаксически на функцию похож.


Inovet   (2011-08-16 12:27:00) [10]

> [22] sniknik ©   (16.08.11 12:10)
> > В Си++ тоже, иначе бы знал что есть std::sort.
> он знает см. [0]

В смысле: иначе бы знал, как работает std::sort и

> [0] анонимус   (16.08.11 00:07)
> почему к массиву прибавляется integer

Ещё функция сравнения элементов нужна для std::sort это operator<.


sniknik   (2011-08-16 12:10:00) [11]

> Базу ты придумал.
не базу, датасет, самое то для хранения, и обработки данных. база "всплыла" от "наводящих" вопросов в попытке хоть что-то объяснить. без толку конечно, т.к. спрашивали не от желания понять или общаться или раскрыть тему, а с желанием "возразить во чтобы то ни стало".

> В Си++ тоже, иначе бы знал что есть std::sort.
он знает см. [0]


Inovet   (2011-08-16 11:57:00) [12]

> [4] анонимус   (16.08.11 01:35)
> Я в нем не силен

В Си++ тоже, иначе бы знал что есть std::sort.


Игорь Шевченко   (2011-08-16 11:35:00) [13]

sniknik ©   (16.08.11 11:31) [19]

Если в память не поместится, то массив не "станет".


> к автору откуда он получается/берется


Автор явно написал - есть код. Сортировки массива. Базу ты придумал.


sniknik   (2011-08-16 11:31:00) [14]

> Не понял
???

вот станет "огромный массив" "супер огромным" (к автору откуда он получается/берется) и в память не поместится... как будешь обрабатывать? частями. т.е. будешь велосипед для хранения/отбора изобретать или базу возьмешь?


Игорь Шевченко   (2011-08-16 11:25:00) [15]

sniknik ©   (16.08.11 11:21) [17]


> тогда даже если память кончится все плавно "переедет" в
> базу.


Не понял, с этого места подробнее, что, куда, когда, зачем переедет.


sniknik   (2011-08-16 11:21:00) [16]

смысл не в перекладывании, смысл держать их там изначально/получать прямо в них... раз уж "большие объемы". и тогда даже если память кончится все плавно "переедет" в базу.


Игорь Шевченко   (2011-08-16 11:02:00) [17]

sniknik ©   (16.08.11 10:37) [15]

Мне, бывает, приходится бороться с людьми, которые как раз промежуточные результаты (среднего объема, десятки, максимум пара сотен тысяч "записей") как раз помещают в разного рода in-memory table. На основании этого опыта могу сказать, что накладные расходы, как по памяти, так и по скорости выполнения, на эти table куда больше, чем на обычный массив в памяти.


sniknik   (2011-08-16 10:37:00) [18]

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


Игорь Шевченко   (2011-08-16 10:24:00) [19]


> http://www.delphimaster.net/view/1-1137329594


http://anekbook.ru/14036/


sniknik   (2011-08-16 10:15:00) [20]

вот нашел обсуждение
http://www.delphimaster.net/view/1-1137329594

там у него тоже индекс есть, прочитал, вспомнил, но только один. в стандартных само собой нет и этого.

выбирать нужно что выгоднее в конкретном случае, а если к примеру массив загружается из базы... (ну вот откуда "огромные массивы"?) только для того чтобы отсортировать (ну вот не представляет себе автор другого способа) то ... все очевидно.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо