powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / О QuickSort не говори
16 сообщений из 66, страница 3 из 3
О QuickSort не говори
    #39421269
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

а что на счет коллизий?
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39421314
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDi,

Хеши в другой ветке обсудим :)
Или ты про другое говоришь?
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39421333
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

о них самых
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39484219
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU

поставил Rapid.Generics вместо стандартных генериков в XSuperObject

Получил
First chance exception at $00DE03E7. Exception class $C0000005 with message 'access violation at 0x00de03e7: read of address 0x000000cc'. Process Stealth_Elka2017.exe (5156)

в

function TList<T>.InternalIndexOf(const Value: T): NativeInt;

строка 17029.

Это вызов Contains



Delphi Seattle.
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39484230
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r,

Привет. Давай разбираться. Выложи какой-то тестовый проект, где повторяется ошибка. Или сам оттрейсь, найди, где косяк, а я уже поправлю.
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39484244
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

вот всегда удивлялся косячности реализации QSort в дельфи.
даже в 10-ке, так и не поправили уход в рекурсию

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
class procedure TArray.QuickSort<T>(var Values: array of T; const Comparer: IComparer<T>;
  L, R: Integer);
var
  I, J: Integer;
  pivot, temp: T;
begin
  if (Length(Values) = 0) or ((R - L) <= 0) then
    Exit;
  repeat
    I := L;
    J := R;
    pivot := Values[L + (R - L) shr 1];
    repeat
      while Comparer.Compare(Values[I], pivot) < 0 do
        Inc(I);
      while Comparer.Compare(Values[J], pivot) > 0 do
        Dec(J);
      if I <= J then
      begin
        if I <> J then
        begin
          temp := Values[I];
          Values[I] := Values[J];
          Values[J] := temp;
        end;
        Inc(I);
        Dec(J);
      end;
    until I > J;
    if L < J then
      QuickSort<T>(Values, Comparer, L, J);
    L := I;
  until I >= R;
end;


в том же fpc вполне кошерно
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Procedure QuickSort(FList: PPointerList; L, R : Longint;
                     Compare: TListSortCompare);
var
  I, J : Longint;
  P, Q : Pointer;
begin
 repeat
   I := L;
   J := R;
   P := FList^[ (L + R) div 2 ];
   repeat
     while Compare(P, FList^[i]) > 0 do
       I := I + 1;
     while Compare(P, FList^[J]) < 0 do
       J := J - 1;
     If I <= J then
     begin
       Q := FList^[I];
       Flist^[I] := FList^[J];
       FList^[J] := Q;
       I := I + 1;
       J := J - 1;
     end;
   until I > J;
   // sort the smaller range recursively
   // sort the bigger range via the loop
   // Reasons: memory usage is O(log(n)) instead of O(n) and loop is faster than recursion
   if J - L < R - I then
   begin
     if L < J then
       QuickSort(FList, L, J, Compare);
     L := I;
   end
   else
   begin
     if I < R then
       QuickSort(FList, I, R, Compare);
     R := J;
   end;
 until L >= R;
end; 

...
Рейтинг: 0 / 0
О QuickSort не говори
    #39484251
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

У меня сортировка без рекурсии вообще )
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39484285
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUkealon(Ruslan),

У меня сортировка без рекурсии вообще )странный там у тебя микс
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39484332
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0rSOFT FOR YOU

поставил Rapid.Generics вместо стандартных генериков в XSuperObject

Получил
First chance exception at $00DE03E7. Exception class $C0000005 with message 'access violation at 0x00de03e7: read of address 0x000000cc'. Process Stealth_Elka2017.exe (5156)

в

function TList<T>.InternalIndexOf(const Value: T): NativeInt;

строка 17029.

Это вызов Contains



Delphi Seattle.

Зато быстро и оптимизированно!
Охота тебе время тратить, удивляюсь.
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39484602
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
возможно глупый совет - порыться в Spring4Delphi - причем не в готовых имсходниках, а в истории развития, закрытых багах и т.д.

хотя оно и поверх стандартных генериков и стандартного TValue написано

Потому что с проблемами реализации низкоуровневых привязок к разным версиям Delphi там накушались по самое не могу, можно поискать чужие грабли, прежде чем самому впрыгивать
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39484730
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOUVizit0r,

Выложи какой-то тестовый проект, где повторяется ошибка. Или сам оттрейсь, найди, где косяк, а я уже поправлю.

да фиг ли там выкладывать, в посте выше расписаны полтора действия для повторения ошибки.
Хотя ладно, сделал тестовый проект, приложил.

Трейсить не буду, я от простого заглядывания в процедуру, где АВ вылетает, чуть сознание от ужаса не потерял. Не для моего слабого мозга такое.
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39484750
asviridenkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r
Трейсить не буду, я от простого заглядывания в процедуру, где АВ вылетает, чуть сознание от ужаса не потерял. Не для моего слабого мозга такое.

Это называется "write-only code". Если что не так работает, найти причину - без шансов.
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39485112
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r,

Спасибо. Доберусь до компа - посмотрю

asviridenkov,

Ой, да ладно сгущать краски. Есть массив, происходит обход всех элементов и сравнение со значением.
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39485143
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovVizit0rТрейсить не буду, я от простого заглядывания в процедуру, где АВ вылетает, чуть сознание от ужаса не потерял. Не для моего слабого мозга такое.
Это называется "write-only code". Если что не так работает, найти причину - без шансов.Все, что писалось с трудом, должно с трудом и читаться (шутка).
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39485150
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
asviridenkovЭто называется "write-only code". Если что не так работает, найти причину - без шансов.
Не, первые полгода-год сам автор еще разобраться может. ;)
...
Рейтинг: 0 / 0
О QuickSort не говори
    #39485217
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vizit0r,

Спасибо
Посмотрел, исправил, залил в репозиторий
...
Рейтинг: 0 / 0
16 сообщений из 66, страница 3 из 3
Форумы / Delphi [игнор отключен] [закрыт для гостей] / О QuickSort не говори
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]