| Altair |
7.03.2004 13:39
Сообщение
#1
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: 45 |
Быстрые циклы.
Всего тестировалось 4 конструкции:
Проведение теста: сортировка массива (array[1..20] of integer) методом пузырька. Всего было проведено 30 тестов : 10 c n= 10^4; 10 c n= 10^5; 10 c n= 10^6; и один тест с n=10^7 (один, т.к. с увеличением степени n на 1, время проведения теста увеличивается соответственно в 10 раз) Результат: Во всех случаях (каждый тест - новый массив) самой быстрой конструкцией оказалась "While ... do...", следом за ней "If ... then Goto..." Прикрепленные файлы
test.pas ( 1.76 килобайт )
Кол-во скачиваний: 755-------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
| trminator |
27.05.2004 23:04
Сообщение
#2
|
|
Четыре квадратика ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 579 Пол: Мужской Репутация: 4 |
Про сортировку. Понятно, что пузырек и компания никуда не годятся
Есть распространенное мнение, что лучшая сортировка -- quicksort. Да, лучшая. В среднем (O(n*log(n))). В худшем случае ее время -- O(n*n). Если вам нужна гарантия, что ваша сортировка ВСЕГДА выполняется за нлогн, ИМХО, лучше выкинуть быструю сортировку. Кстати, помогите идентифицировать сортировку. Кажется, это -- пирамидальная: Код procedure swap (i, j : word); var t : integer; begin t := a[i]; a[i] := a[j]; a[j] := t; end; procedure sort (n, t : word); begin while ((t shl 1+1 <= n) and (a[t shl 1+1] > a[t]) or (t shl 1 <= n) and (a[t shl 1] > a[t])) do if (a[t shl 1+1] >= a[t shl 1]) and (t shl 1 +1 <= n) then begin swap (t shl 1 +1, t); t := t shl 1+1; end else begin swap (t shl 1, t); t := t shl 1; end; end; Раскопал ее в развалинах своего винта. Она работает -------------------- Закон добровольного труда Зимерги:
Люди всегда согласны сделать работу, когда необходимость в этом уже отпала |
Altair Улучшение кода 7.03.2004 13:39
mj на процессорах P2 и ниже
FOR быстрее чем WHILE до... 13.03.2004 18:09
Atos И Да ЗдравствуетИтерация! Пример: старая добра... 16.03.2004 14:44
trminator [b]Ускорение вычислений mod
Програма считает 50 -... 15.05.2004 18:53
P@sh@ [color=blue]Деление на степень двойки
Аналогично ... 15.05.2004 20:08
P@sh@ Разворачивание циклов. -=loops unrolling=-
Один и... 17.05.2004 18:42
trminator P@sh@, сомневаюсь, что игра стОит свеч. Хотя попро... 19.05.2004 19:35
Altair Процедуры FAR
Все процедуры в модулях, пишутся в ... 25.05.2004 14:28
BlackShadow Специально для Oleg_Z:
В BP есть такая возможность... 25.05.2004 16:26
BlackShadow Описалова в книгах достаточно. Посмотрю чего - зав... 25.05.2004 22:46
trminator Как нам говорили на лекции по ОС, оверлей - аналог... 27.05.2004 18:30
trminator А про использование AssignCRT вместо Assign для за... 27.05.2004 18:37
BlackShadow Ну и зкономии ради можно (олимпиадныю трюк) воспол... 27.05.2004 21:40
Altair Просто есть файловая переменная Input и output тол... 27.05.2004 21:44
BlackShadow trminator, да похоже на пирамидку.
Oleg_Z, использ... 28.05.2004 11:36
trminator Так... я не закончил про сортировки :)
ИМХО, испол... 29.05.2004 15:32
BlackShadow trminator, по памяти, может, её и проще, но на реф... 31.05.2004 11:08
BlackShadow Oleg_Z, вот чего у меня в книге есть:
Функции Over... 31.05.2004 11:43
Altair
То есть ты хочешь сказать, что если описать :
va... 31.05.2004 15:44
BlackShadow
А, если ты напишешь так:
Var
a,b:Inte... 31.05.2004 16:04
Romtek Взято из ООП. Объектно-ориентированное программиро... 7.06.2004 22:25
Altair Begin и end лишние видимо я поставил, а вот объеди... 8.06.2004 13:52
BlackShadow Вспомнил один момент такой. При работе с дробями, ... 15.06.2004 12:32
Altair
Нет, ассемблер нужно применять только для шлифовк... 15.06.2004 19:27
Romtek Complete boolean evaluation (compiler option) 15.06.2004 22:08
BlackShadow Да уж, Oleg_Z, это действительно отключается дирек... 16.06.2004 13:42
Altair BlackShadow, в следующий раз оформляй логические ... 16.06.2004 15:20
Romtek В первом случае имеем 2 операции, а во втором - 3 16.06.2004 16:15
Altair Да, но во первых операция NOT ИМХО должна выполнят... 16.06.2004 20:24
Altair Вот еще:
Если в программе используется write и wri... 17.06.2004 13:34
Altair REAL почти в 2 раза медленнее [b]ВСЕХ других число... 18.06.2004 14:05
P@sh@ Oleg_Z
Real потому медленнее, что у него размер н... 26.06.2004 7:41
BlackShadow Int64 появился только в 32-битных компиляторах. По... 2.07.2004 15:23
Atos А вот это, мне кажется, интересно:
Простой пример:... 16.10.2004 8:13
BlackShadow Atos, ну это и лосю понятно. При последовательном ... 18.10.2004 21:24
Atos
В каком именно Паскале?
Ну, я же не лось...
Не... 19.10.2004 6:17
GoodWind
Borland Turbo Pascal 7.0
TMT pascal
да и во всех ... 19.10.2004 12:17
Atos Действительно... Просто никогда её не использовал.... 19.10.2004 13:51
Altair Странно, тестирую бытсрую и пирамидальную на скоро... 7.11.2004 15:14
Altair Да, все верно,
[color=blue]пирамида медленнее чем... 7.11.2004 16:24
Dark Просто память физически устроена как конденсаторы ... 9.11.2004 1:23
volvo [b]Обмен значений в переменных.
Для увеличения ск... 22.01.2005 19:39![]() ![]() |
|
Текстовая версия | 9.12.2025 1:18 |