Поддержка
  • Офлайн
Сейчас на сайте:
81
Рекорд пребывания на сайте:
3647 пользователей, 01.07.2018
За сегодня:
5426
Зарегистрировано:
99386
 
18+

5-жды призёр ЭпоЭ и скорая Русская сортировка половинами интегралов ставок и МЫ

1 октября 12:03

5-жды призёр ЭпоЭ и скорая Русская сортировка половинами интегралов ставок и МЫ


мной применяется Русская сортировка половинами интегралов ставок

для сортировки матчей по коэффициентам
чтобы ставить на крупные коэффициенты меньше
и чтобы ставить на малые коэффициенты больше

и чтобы после выигрыша понижать ставки


rusortpol50.gif


Теория в моей теме Русская сортировка половинами: человеческая сортировка быстрее в 4 раза и МЫ а здесь только визуализации малого размера:


Русская сортировка половинами важные действия

rspvip.gif

Russian sorting halves important actions visualisation 


Русская сортировка половинами все действия

rshall.gif

Russian sorting halves all actions visualization 


Визуализация и теория: 

RuSort55.gif


Думаю далее продолжу темы с ключевыми словами 

Интеграл и Логарифм и Комбинаторика и Вероятность

обобщая мои темы https://legalbet.ru/users/147331/


Чтобы ставить на крупные коэффициенты меньше
и чтобы ставить на малые коэффициенты больше 

и чтобы после выигрыша понижать ставки


Никому ничего никогда не рекомендую и всегда пишу про себя


Зато каждый призёр конкурса ЭпоЭ может создавать свои темы 


Дочитавшим до сюда вдруг интересно сравнение сортировки: 


Русская Сортировка Половинами Ускоряет Данилин
Russian Sort Halves Accelerate Danilin

ускоряющее развитие: массивы d(N) и a(N)

и действительно успешно: сортирует 100ооо за 0,22 секунды


сортирует 1000ооо за 2,2 секунды

сортирует миллион за 2,2 секунды

сортирует 1'000'000 за 2,2 секунды


' Russian Sorting Halves Danilin

DECLARE SUB RussianSortingHalvesDAV (ab!, yz!, part!, age!)
CLOSE
OPEN "c:/N.txt" FOR INPUT AS #5
INPUT #5, n: PRINT n

'n=123456

age=1+LOG(n)/LOG(2)
PRINT n, age

DIM SHARED d(n) 'AS LONG
DIM SHARED a(n) 'AS LONG

'OPEN "c:/ISX.txt" FOR INPUT AS #1
'FOR i=1 TO n: INPUT #1, d(i): NEXT

FOR i=1 TO n: d(i)=n-i+1: NEXT ' INT(RND*n)
'FOR i=1 TO n STEP 2: d(i)=n-i+1: d(i+1)=d(i): NEXT
'FOR i=1 TO n: d(i)=INT(RND*n): NEXT '

IF n < 17 THEN FOR k=1 TO n: PRINT d(k);: NEXT: PRINT
IF n > 16 THEN FOR k=n-8 TO n: PRINT d(k);: NEXT: PRINT

start=TIMER

IF age > 0 THEN
 CALL RussianSortingHalvesDAV(1, n, 1, age)
END IF

finish=TIMER

IF n < 17 THEN FOR k=1 TO n: PRINT d(k);: NEXT: PRINT
IF n > 16 THEN FOR k=n-8 TO n: PRINT d(k);: NEXT: PRINT

PRINT finish-start

OPEN "c:/=RuSortHalves_dav.txt" FOR OUTPUT AS #2
PRINT #2, finish-start; "sekund "
PRINT #2, n; "elements", "RECURSION"
FOR i=1 TO 22: PRINT #2, d(i): NEXT
FOR i=n-22 TO n: PRINT #2, d(i): NEXT

FOR k=1 TO 20: PRINT d(k);: NEXT: PRINT: PRINT
FOR k=n-9 TO n: PRINT d(k);: NEXT: PRINT: PRINT

END

SUB RussianSortingHalvesDAV (ab, yz, part, age)

IF yz-ab < 1 THEN EXIT SUB

FOR i=ab TO yz
 summa=summa+d(i)
NEXT
middle=summa/(yz-ab+1)

abc=ab-1
xyz=yz+1

FOR i=ab TO yz
 IF d(i) < middle THEN abc=abc+1: a(abc)=d(i): ELSE xyz=xyz-1: a(xyz)=d(i)
NEXT

FOR i=ab TO yz: d(i)=a(i): NEXT

IF part < age THEN
 IF abc >= ab THEN CALL RussianSortingHalvesDAV(ab, abc, part+1, age)
 IF xyz <= yz THEN CALL RussianSortingHalvesDAV(xyz, yz, part+1, age)
END IF

END SUB


PureBasic Русская Сортировка Половинами и скорая и человеческая
PureBasic Russian Sorting Halves and fast and human

считывает только количество из c:/N.txt
удобно чтобы обходиться без оболочки PureBasic
и сортировав хоть миллиарды пишет по 1000
наименьших и наибольших в c:/RSH_DAV.txt

PureBasic Russian Sorting Halves Recursive
сортирует 1000000 за 0,3 секунды

; Russian Sorting Halves Danilin
OpenConsole()
Declare RussianSortingHalvesDAV (ab, yz, part, age)

;n=12345678

If ReadFile(0, "c:/N.txt")
 n=Val(ReadString(0))
 CloseFile(0)
EndIf

age=Int(1+(Log(n)/Log(2)))
Global Dim d(n)
Global Dim a(n)

For i=1 To n
 ;d(i)=Random(n,1) ; случайные значения от 1 до n
 d(i)=n-i+1;
Next

 ; вывод исходных значений до сортировки
PrintN(" Исходный без сортировки Первые 20")
For k=1 To 20: Print(" "+ d(k)): Next: PrintN("")
PrintN(" Последние 10")
For k=n-9 To n : Print(" "+ d(k)): Next: PrintN("")

start=ElapsedMilliseconds() ; таймер

If age > 0 :
 RussianSortingHalvesDAV(1, n, 1, age)
EndIf

finish=ElapsedMilliseconds() ; таймер

PrintN("RussianSorting Первые 50")
For k=1 To 50: Print(" "+ d(k)): Next: PrintN("")
PrintN(" Последние 20")
For k=n-19 To n : Print(" "+ d(k)): Next: PrintN("")

PrintN( "Время сортровки RussianSorting=" + Str(finish-start))

If OpenFile(0, "c:/RSH_DAV.txt")
 For k=1 To 1000 :WriteString (0, " " +d(k)): Next
 For k=n-1001 To n :WriteString (0, " " +d(k)): Next
 CloseFile(0)
EndIf

Input()
End

; Процедура сортировки
Procedure RussianSortingHalvesDAV (ab, yz, part, age)

If yz-ab < 1 :ProcedureReturn 0
EndIf

For i=ab To yz
summa=summa+d(i)
Next
middle=summa/(yz-ab+1)

abc=ab-1
xyz=yz+1

For j=ab To yz
If d(j) <= middle:
abc=abc+1: a(abc)=d(j)
Else
xyz=xyz-1: a(xyz)=d(j)
EndIf

Next

For w=ab To yz: d(w)=a(w): Next

If part < age :
If abc >= ab :RussianSortingHalvesDAV(ab, abc, part+1, age)
EndIf
If xyz < yz :RussianSortingHalvesDAV(xyz, yz, part+1, age)
EndIf
EndIf

EndProcedure


Результат экспериментов для предыдущего языка:
копия массива результатов в данные только целиком ухудшает
и больше преуспеют языки где есть быстрый подсчёт суммы
и копирование части массива результатов в массив данных

Русская Сортировка Третями
распределяющая: меньше трети и больше двух третей
выглядит бесконечно при рекурсии
ведь непонятно как переходить между третями

Зато делить массив на 3/9/27 частей очевидно легко
в то время как Русская сортировка половинами делит
массив на 2/4/8 частей как Русская Сортировка Осьмушками

Интересный материал?
Да2
Нет0
Автор
Блог • 9 очков • 396 место
Комментарии (1)
Start typing your username
Загрузить фото
1 октября в 14:53
+
+1
-
#
п****ц сложна
--
Комментарий был отредактирован (Плохое слово :))
Ответить
Статистика за октябрь / за всё время
Top 10 Эксперты Гандикаперы
Top 10 Ставки Прибыль
Безшансов (9) 16/2/7 +9 790 ₽
Павел Боровко (1) 12/0/3 +5 750 ₽
Jack 07 (3) 10/0/6 +5 130 ₽
Пардо 4/0/1 +4 250 ₽
Герчиков 8/0/3 +4 000 ₽
Алмазов 6/1/1 +3 880 ₽
Gregchel 9/1/5 +2 490 ₽
Lucky forecast 4/0/1 +2 430 ₽
Сторонние 4/1/0 +2 240 ₽
Панков 4/0/1 +2 210 ₽
Эксперты Ставки Прибыль
Безшансов (9) 16/2/7 +9 790 ₽
Пардо 4/0/1 +4 250 ₽
Герчиков 8/0/3 +4 000 ₽
Сторонние 4/1/0 +2 240 ₽
Янькова 7/0/3 +1 790 ₽
Моссаковский 7/0/5 +650 ₽
Митрушкин (1) 0/0/0 0 ₽
Вуйтек 5/0/6 -800 ₽
Баранов (4) 9/0/13 -820 ₽
Гутцайт 1/2/3 -2 240 ₽
Егоров 1/0/4 -2 870 ₽
Светоч (4) 4/2/7 -3 830 ₽
Батурин (3) 1/0/5 -3 880 ₽
Радимов (1) 1/2/6 -5 440 ₽
Гандикаперы — профессиональные игроки, которые показали плюс, сделав не менее 300 ставок.
Гандикаперы Ставки Прибыль
Павел Боровко (1) 12/0/3 +5 750 ₽
Jack 07 (3) 10/0/6 +5 130 ₽
Алмазов 6/1/1 +3 880 ₽
Gregchel 9/1/5 +2 490 ₽
Lucky forecast 4/0/1 +2 430 ₽
Панков 4/0/1 +2 210 ₽
Садовой 5/0/2 +1 840 ₽
Ptolmees 3/2/1 +1 660 ₽
bados 8/0/6 +1 540 ₽
ММА Fan 4/0/2 +940 ₽
VolleyStats (4) 3/0/2 +750 ₽
ViLLi 2/0/1 +520 ₽
Captain7 (1) 2/0/1 +490 ₽
Arkadiy_bets 5/0/4 +240 ₽
Макаров 2/0/1 +230 ₽
Кашин 7/0/5 +90 ₽
Светлица 1/0/1 -150 ₽
estonec (4) 1/1/1 -370 ₽
VanyaDenver 2/0/2 -630 ₽
Reincarnation_Life 0/0/1 -1 000 ₽
tigerurtos 9/1/11 -1 390 ₽
Сторонние капперы (4) 58/6/55 -1 860 ₽
Fedor Nadalich (1) 1/0/4 -3 320 ₽
Alex2018 (2) 1/1/6 -5 170 ₽
Top 10 Эксперты Гандикаперы
Top 10 Ставки Прибыль
Кириченко 357/24/201 +77 090 ₽
Панков 268/21/159 +65 820 ₽
Пардо 281/1/244 +47 080 ₽
Сторонние капперы (4) 767/51/570 +41 340 ₽
Светлица 115/14/62 +29 820 ₽
bados 92/8/44 +29 400 ₽
Батурин (3) 206/1/157 +26 670 ₽
Павел Боровко (1) 71/1/30 +25 640 ₽
Gregchel 124/8/87 +21 970 ₽
VolleyStats (4) 99/3/69 +20 880 ₽
Эксперты Ставки Прибыль
Пардо 281/1/244 +47 080 ₽
Батурин (3) 206/1/157 +26 670 ₽
Вуйтек 227/19/188 +16 630 ₽
Герчиков 54/5/39 +10 030 ₽
Безшансов (9) 16/2/7 +9 790 ₽
Светоч (4) 302/90/257 +1 915 ₽
Радимов (1) 9/3/10 -900 ₽
Баранов (4) 68/1/79 -1 580 ₽
Янькова 12/0/10 -2 240 ₽
Егоров (1) 64/1/112 -3 980 ₽
Моссаковский 168/8/168 -5 550 ₽
Гутцайт 240/49/229 -10 260 ₽
Митрушкин (1) 63/15/64 -15 000 ₽
Сторонние 237/11/246 -44 010 ₽
Гандикаперы — профессиональные игроки, которые показали плюс, сделав не менее 300 ставок.
Гандикаперы Ставки Прибыль
Кириченко 357/24/201 +77 090 ₽
Панков 268/21/159 +65 820 ₽
Сторонние капперы (4) 767/51/570 +41 340 ₽
Светлица 115/14/62 +29 820 ₽
bados 92/8/44 +29 400 ₽
Павел Боровко (1) 71/1/30 +25 640 ₽
Gregchel 124/8/87 +21 970 ₽
VolleyStats (4) 99/3/69 +20 880 ₽
Трифонов 137/14/89 +19 010 ₽
Садовой 100/10/53 +18 240 ₽
Алмазов 52/2/22 +16 000 ₽
VanyaDenver 119/8/95 +14 500 ₽
Макаров 32/0/14 +13 450 ₽
Lucky forecast 67/4/45 +12 440 ₽
Jack 07 (3) 92/1/57 +10 400 ₽
Alex2018 (2) 75/5/56 +9 300 ₽
ViLLi 64/20/62 +8 630 ₽
Ptolmees 37/19/28 +7 530 ₽
Reincarnation_Life 51/1/41 +6 890 ₽
tigerurtos 68/6/60 +6 240 ₽
Arkadiy_bets 62/3/45 +4 920 ₽
estonec (4) 29/5/15 +4 400 ₽
Captain7 (1) 39/9/33 +2 550 ₽
Кашин 110/12/86 +820 ₽
Fedor Nadalich (1) 56/4/37 -1 680 ₽
Rasta85 36/5/28 -2 170 ₽
ММА Fan 23/0/27 -6 560 ₽
Для реализации услуг и функций нашего сайта, а также для сбора данных о том, как посетители взаимодействуют с ним, мы применяем в том числе и файлы cookie. Нажимая "Принять", вы соглашаетесь с использованием нами таких инструментов. 
Подробнее
Принять