Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Задача для 1 класса
Диалог специалистов АВОК > ГОСТЕВАЯ КНИГА АВОК > Беседка > Территория свободного общения
Страницы: 1, 2, 3, 4, 5, 6
экспорт
ракеты и математика и логарифм и МЫ

и чудесный повод напомнить про
математический аппарат
расчёта вероятности вероятности

Определить надёжность и экономичность стрельбы
при 30 выстрелах, если вероятность попадания
при 1 выстреле равна 0,2 и для поражения цели
требуется 1 прямое попадание.

Решение.
Надежность стрельбы Р = 1 - 0,8^30 = 0,9988.
Экономичность стрельбы а = 30 x 0,2 = 6 попаданий.

Очевидно, надежность стрельбы слишком велика
и может быть снижена; снижение надежности,
в свою очередь, повлечет уменьшение расхода
снарядов на стрельбу.

Например, при надёжности стрельбы, равной 96%

S = lg(1-0,96)/lg(1-0,2) = lg0,04/lg0,8 =
= 2,60206 / 1,90309 = -1,39794 / -0,09691 = 15 снарядам
а экономичность стрельбы а = 15 x 0,2 = 3 попаданиям.

экспорт
на тему сортировка читая дюжину статей
с программами иногда часто вижу ляп:

для А элементов 2 вложенных массива
равные и число перестановок якобы А^2

зато правильнее: I от1 доА и J отI доА
и видимо те ошиблись пиша 1 вместо I
причём часто противореча пояснениям

и проведя эксперимент контролируя время
на сортировку учитывая полный алгоритм
сортируя массив обратный от 100ооо до 1

всё про qb64 компилятор qbasic:
мой пополам 135 секунд и А^2 215 секунд
мой простой 389 секунд и А^2 497 секунд
чужой непонятный 176 секунд и больше qb не нашёл

и ещё есть методы обмена без доп переменной
и ещё надо бы обсудить на форуме qbasic

в свете вышесказанного: на тему сортировка и МЫ
обнаруживаются остроумные решения
ускоряющие тысячи операций в разы



Сергей Валерьевич
Цитата(экспорт @ 12.4.2018, 10:26) *
и надеюсь виден ютюб

Цитата
Это видео содержит материалы от партнера CTB Film Company, который заблокировал их показ в вашей стране в целях соблюдения авторских прав.

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

Visualization of 24 Sorting Algorithms In 2 Minutes

зато каждый: может + должен = обязан
найти заевший ютюб по названию

чисто по теме: задача для 1-го класса

а я пока начал тему не найдя на киберфоруме
ничего работающего на qbasic бэйсик
про сортировку и тогда скопирую программу
готовую для проверки сортировок на время

сортировка в excel общеизвестна:

Возможно сортировать поместив в крайний левый столбец
порядковые номера и сортируя область возрастая или убывая
и легко перетасовывать готовые результаты поместив
в крайний левый столбец случайные номера и сортируя область.
Сергей Валерьевич
Цитата(экспорт @ 4.5.2018, 22:30) *
зато каждый: может + должен = обязан

А как все просчитаешь и подобьешь дебет с кредитом, чем заниматься будешь?
экспорт
признак нищеты: выбор либо-либо

зато избавившись от кредитов
незачем ждать закрытия управляемых
дешёвых кредиток чтобы развиваться

а по теме выше: рассчитываем средний элемент
и за 1 цикл раскидываем в начало и в конец
в другой массив и сортируем 2 части раздельно
экспорт
додумав деление на 4 участка

100ооо элементов наизнанку
сортировались 66 секунд

и программу размещу позже
пока не универсально: циклы подряд

наверняка возможно превратить в 3 цикла
тогда небось получится делить ещё на части
экспорт
на 4 части неудачно делит нечётное количество
зато перешёл от имён в 2-мерный массив

известна формула количества проходов
W = LOG(N) / LOG(2)
для создания вложенных циклов
и думаю останется деление пополам

оказывается худшими исходными данными
являются данные специально подготовленные
и подтверждается формула числа перестановок:
=2*4*3/2 = 12 перестановок и 6 перестановок

вместо изначальных =8*7/2 = 28 перестановок
и вместо массово ошибочного числа перестановок
=8^2 = 64 перестановок
12 перестановок в 5 раз быстрее
6 перестановок в 10 раз быстрее



и данную тему начал на спец форуме и на сайте
HeatServ
Цитата(экспорт @ 4.5.2018, 21:30) *
пиша из России недоумеваю
Пушкин при таком раскладе на Чёрной Речке не в Дантеса бы стрелял, а просто застрелился б. Б. Ъ.
экспорт
пиша слово "пиша"
знаю: для многих новое знание

и как ни странно естественная
"форма деепричастия: пиша"
о чём сообщают в энциклопедиях

пиша про слово "пиша"
HeatServ
Цитата(экспорт @ 5.5.2018, 14:42) *
пиша слово "пиша"
знаю: для многих новое знание

и как ни странно естественная
"форма деепричастия: пиша"
о чём сообщают в энциклопедиях

пиша про слово "пиша"
Друг мой, я же вроде как забанен на веки вечные?
инж323
За десяток лет на форуме от Сфинкса есть лишь про многовариантность каких то невнятных разработок неких разделов, но без завязки на реальность проектов и реальность оплаты этих проектов( кроме странных перечислений на карточки кредитные) и полные трагизма проработки "как сократить траты при выплатах кредитов и прочих обязательных платежей".
Скажите, ОВКТ, Лошаденок, Сфинкс и т.д.- вы пробовали просто работать и зарабатывать , что б без кредитов на жизнь хватало? Или вы на вертолет копите? Про простые житейские проблемы, типа купил квартиру трешку, родил двух детей, отдал в школу\ДДУ, замучался с авто этим, как сделать лучше комфорт в доме вы ни разу не писали за эти годы. Может вы себе завод построили втихоря и санкции амеров вам кислород со сбытом перекрыли, или еще что то такое нужное,хорошее , масштабное?
Современники ваши должны ж знать, может эта напасть с кредитами ( ведь даже не ипотечка) не просто так, а весьма по делу и от решения серьезных глобальных задач у вас возникла, а мужики не знают.
экспорт
алгоритм сортировки молча проверяют
на спец форумах размещу позже зато

предыдущее сообщение показывает
насколько классно прячу родичей

честно: у меня нет кредитов 10 лет
буквально с 2008 года
остались только дешёвые кредитки

и на кредитки перевёл родичей
закрыв кредиты родичей до зимнего
повышения оплаты за коммуналку

и всем кроме слова "кредит"
рекомендую лучше изучить "процент"

ОПРОС кредиты и получки и МЫ
http://forum.abok.ru/index.php?showtopic=1...t&p=1285772

ОПРОС сколько зарабатывали в среднем ежемесячно
http://forum.abok.ru/index.php?showtopic=1...t&p=1346032
экспорт
в данной теме лучше бы рассказали

какой язык программирования знают
я например знаю qbasic & excel

и дальше не развиваюсь без задач хотя
скачал решения одинаковых задач
на разных языках программирования



quicksort qbasic быстрая сортировка половиной и МЫ

Код
n = 37
DIM d(2, n), sum(5), sred(5)
RANDOMIZE TIMER

FOR i = 1 TO n
    d(1, i) = n - i + 1
    PRINT d(1, i);
NEXT: PRINT

start = TIMER: p = 0: s = 0

FOR i = 1 TO n: sum(1) = sum(1) + d(1, i)
NEXT: sred(1) = sum(1) / n: PRINT sred(1):


y = 1: z = 0: FOR i = 1 TO n
    IF d(1, i) < sred(1) THEN d(2, y) = d(1, i): y = y + 1: ELSE d(2, n - z) = d(1, i): z = z + 1
NEXT

FOR i = 1 TO n: PRINT -d(2, i);: NEXT: PRINT
FOR i = 1 TO n: sum(2) = sum(2) + d(2, i): NEXT
sred(2) = sum(2) / n: PRINT sred(2): PRINT


FOR i = 1 TO n / 2: FOR j = i TO n / 2
        IF d(2, i) > d(2, j) THEN x = d(2, i): d(2, i) = d(2, j): d(2, j) = x: p = p + 1
s = s + 1: NEXT: NEXT
FOR i = n / 2 TO n: FOR j = i TO n
        IF d(2, i) > d(2, j) THEN x = d(2, i): d(2, i) = d(2, j): d(2, j) = x: p = p + 1
s = s + 1: NEXT: NEXT

FOR i = 1 TO n: sum(3) = sum(3) + d(2, i): NEXT: sred(3) = sum(3) / n: PRINT


finish = TIMER

FOR i = 1 TO n: PRINT d(2, i);: NEXT
PRINT: PRINT sred(3): PRINT

PRINT finish - start, s, p
END






в excel
Возможно сортировать поместив в крайний левый столбец
порядковые номера и сортируя область возрастая или убывая
и легко перетасовывать готовые результаты поместив
в крайний левый столбец случайные номера и сортируя область.
экспорт
сам экспериментально нашёл и исправил особенность
типа если ввести большое значение в массив
тогда средний окажется искажён
и массив делится пополам неправильно

а оказалось решение встроено в виде счётчика
количества элементов меньше среднего и работает
причём без GОТО и значит классный код

1-вые непонятные циклы лишь заполнение массива
специально худшими значениями и заодно
100ооо элементов сортировал за менее 120 секунд
1ооо сортирует за 0,05с за 274ооо проходов и 4600 перестановок

Код
n = 13
DIM d(2, n), sum(5), sred(5)

RANDOMIZE TIMER

FOR i = 1 TO INT(n / 2)
    d(1, i) = INT(RND * 20) + 5
    PRINT i; "="; d(1, i);
NEXT: PRINT

FOR i = INT(n / 2) + 1 TO n
    d(1, INT(i + 0.5)) = INT(RND * 10) + 1
    PRINT INT(i + 0.5); "="; d(1, i);
NEXT: PRINT: PRINT

FOR k = 1 TO n: PRINT d(1, k);: NEXT: PRINT

start = TIMER: p = 0: s = 0

FOR i = 1 TO n: sum(1) = sum(1) + d(1, i)
NEXT: sred(1) = sum(1) / n: PRINT sred(1): PRINT

y = 1: z = 0: FOR i = 1 TO n
    IF d(1, i) < sred(1) THEN d(2, y) = d(1, i): y = y + 1: ELSE d(2, n - z) = d(1, i): z = z + 1
NEXT: PRINT

FOR i = 1 TO n: sum(2) = sum(2) + d(2, i): NEXT
sred(2) = sum(2) / n: PRINT sred(2), y: PRINT

FOR i = 1 TO y - 1: FOR j = i TO y - 1
        IF d(2, i) > d(2, j) THEN x = d(2, i): d(2, i) = d(2, j): d(2, j) = x: p = p + 1
    s = s + 1: NEXT:
NEXT

FOR i = y TO n: FOR j = i TO n
        IF d(2, i) > d(2, j) THEN x = d(2, i): d(2, i) = d(2, j): d(2, j) = x: p = p + 1
    s = s + 1: NEXT:
NEXT

FOR i = 1 TO n: sum(3) = sum(3) + d(2, i): NEXT: sred(3) = sum(3) / n: PRINT
  
finish = TIMER

FOR i = 1 TO n: PRINT d(2, i);: NEXT
PRINT: PRINT sred(3)

PRINT finish - start, s, p
END
экспорт
другие на другом компьютере проверили
результат: 100ооо ячеек сортирует до 11 секунд
за 467ооо перестановок как в теории

а другие алгоритмы пока отпали т.к. используют не qb



при том что возможно сортировать глубже
через логарифм числа ячеек
экспорт
быстрейшая сортировка 1-мерного массива
на понятном языке basic без особых функций
сортирует сотни тысяч элементов за секунду
и не помню где нашёл

Код
n = 1000
DIM x(n) AS LONG
DIM y(-1 TO n) AS LONG
y(-1) = 1

FOR i = 1 TO n: x(i) = INT(RND * 1000): NEXT

FOR i = 1 TO n
    y(x(i)) = y(x(i)) + 1
NEXT

FOR i = 1 TO n
    y(i) = y(i) + y(i - 1)
NEXT

FOR i = 0 TO n
    FOR j = y(i - 1) TO y(i)
        x(j) = i
NEXT j, i

FOR i = 1 TO n: PRINT x(i);: NEXT
END
экспорт
Код
' SHELL сортировка

n = 100000
DIM a(n)

FOR i = 1 TO n: a(i) = INT((RND * 1000) + 5): NEXT
FOR k = n - 10 TO n: PRINT a(k);: NEXT: PRINT
start = TIMER

' algorithm

d = n \ 2
WHILE d > 0
    DO
        done = 1
        FOR i = 1 TO n - d
            IF a(i) > a(i + d) THEN
                SWAP a(i), a(i + d)
                done = 0
            END IF
        NEXT
    LOOP UNTIL done
    d = d \ 2
WEND

' algorithm

finish = TIMER
FOR i = n - 10 TO n: PRINT a(i);: NEXT: PRINT
PRINT finish - start
END

экспорт
сортировка на одинаковых массивах

пузырьковая bubble = все со всеми: ошибочный массовый алгоритм из интернета
школьная = улучшенная пузырьковая: различные элементы без перестановки равных

русская сортировка: школьная или выбором включая деление на 2 части включает
цикл и переменные без индекса = улучшенная школьная и массив делится на 2 части
и также улучшается сортировка выбором и другие человеческие нормальные понятные
и возможно делить на 4 части и на 8 частей не усложняя понимание

русская сортировка ..смены ....=2*(N/2)*((N/2)-1)/2 ....N=8 ...=2*4*3/2 ...12
школьная ............смены ....=N*(N-1)/2 ..............N=8 ...=8*7/2 .....28
пузырьковая bubble ..смены ....=N^2 ....................N=8 ...=8^2 .......64

100ооо шт.
русская сортировка ..........170 ...секунд
школьная ....................230 ...секунд
пузырьковая bubble ..........440 ...секунд
выбором сортировка select ...140 ...секунд
русская сортировка выбором ..105 ...секунд

1000 шт.
русская сортировка .....................циклы 261342 ..смены 92805
школьная ...............................циклы 499500...смены 227585
пузырьковая bubble internet ошибочная ..циклы 998001 ..смены 227585
выбором сортировка select ..............циклы 999 .....смены 6346
русская сортировка выбором 2 части .....циклы 999 .....смены 4406
экспорт
удачно тема заела на сортировке

казалось бы возможно сортировать
только числа? отнюдь

реально вычислять среднюю букву
причём вовсе не среднюю в алфавите

требуется массив номеров 1-й буквы
и повышать ячейки учитывая каждое слово
и всё сложив разделить на число слов

благо проверено и работает и олицетворяется
средняя линия интеграла
или среднее значение интеграла

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





вообще в презентации всего 47 кадров
и реально создать такой ликбез
про логарифм и др.
экспорт
за час добавлен звук и есть субтитры
но по-настоящему лекцию поймут
понимающие без звука и без подсказок



и объединяю с другой темой:
сортировка 21 века



вкратце: допустим трубы большие и малые
за 1 проход разложив трубы направо и налево
время сортировки сокращается в 2 раза

и ещё раз разложив время сокращается в 4 раза
что проверено на компьютере

в каждой презентации менее 50 кадров
значит каждый может создавать то же
экспорт
внутри ютюба дюжина примеров
и думаю развить отдельно

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

и заодно из многих мини ютюбов
сделать живые мини картинки
благо есть интернет сервис

и разместив на своём сайте
доступны на всех форумах

в свете вышесказанного вспомнил
картинку 2007 года про ... интеграл

экспорт
логарифм жизни

ежегодно нечто изменяется кратно

? через какое КОЛИЧЕСТВО лет нечто
даст РОСТ в нужный МАСШТАБ ?

МАСШТАБ равен: РОСТ в степени КОЛИЧЕСТВО

МАСШТАБ = РОСТ ^ КОЛИЧЕСТВО

КОЛИЧЕСТВО: в какую степень возвести
РОСТ чтобы получить МАСШТАБ

ЛОГАРИФМ: в какую степень возвести
РОСТ чтобы получить МАСШТАБ

excel формула: КОЛИЧЕСТВО = ...

=LOG(МАСШТАБ;РОСТ)

проверка:
нечто ежегодно растёт в 2 раза

? через сколько лет
нечто вырастет в 64 раза ?

МАСШТАБ = РОСТ ^ КОЛИЧЕСТВО
64 = 2 ^ КОЛИЧЕСТВО
КОЛИЧЕСТВО = LOG(МАСШТАБ;РОСТ)
=LOG(64;2)
= 6
ответ: через 6 лет

пример: за 25 лет инфляция
обесценила деньги в 10 раз

? какова была инфляция ежегодно ?

? каким должен быть РОСТ чтобы
за 25 ЛЕТ нечто выросло бы в 10 раз ?

ЛЕТ = LOG(МАСШТАБ;РОСТ)
РОСТ = МАСШТАБ ^ (1 / ЛЕТ)

РОСТ = 10 ^ (1/25)
РОСТ = 1,0965 = 9,65 % в год

перевод в одинаковый логарифм:
десятичный: = LOG (МАСШТАБ) / LOG (РОСТ)
натуральный: = LN (МАСШТАБ) / LN (РОСТ)

задача повышенной сложности:

из формулы постоянной вероятности: C+р^N=1
вывести формулу 8-го века:
вероятность вероятности N = LOG(1-C)/LOG(1-p)

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



и то требует час на создание
и важно сразу настроить скорость
чтобы не стирать сотни кадров

и в gif переводится через сайт ezgif
экспорт
простейшая ... комбинаторика



заодно возможно выучить
импортные буквы
и провериться на дальтонизм
экспорт
надеюсь ясно почему в анимации выше
отсутствуют примеры из 5 и 6 точек

накануне решали задачу:



в каждом столбце и в каждом блоке
из 6 клеток расставить цифры от 1 до 6
и некоторые цифры на своих местах

цель: суммы по горизонталям
и по вертикалям и в блоках
должны быть равными и равны 21

применив понимание решается за 5 минут
экспорт
задача решается за 5 минут

ежели выявить все возможные
комбинации в каждой ячейке



и сразу видны ячейки где
по 2 варианта и даже 1 вариант

ежели никто не решит тогда
в будни заменю картинку на ответ
инж323
правила честнойторговли

Дано. Есть лекарство, которое нужно пропить курсом. Минимальный курс - 8 таблеток, максимальный - 10.
Вопрос. По сколько таблеток в блистере будет продаваться это лекарство?
a) 8
б) 10
в) 7
CNFHSQ
Цитата(инж323 @ 24.6.2018, 21:48) *
правила честнойторговли

Дано. Есть лекарство, которое нужно пропить курсом. Минимальный курс - 8 таблеток, максимальный - 10.
Вопрос. По сколько таблеток в блистере будет продаваться это лекарство?
a) 8
б) 10
в) 7

7
экспорт
мы учёные удивляемся видя как
другие не придумывают тоже то же

и накануне получено Свидетельство:
Русская сортировка половинами

правильно читать через букву О:
Русская сОртирОвка пОлОвинами

на изображении часть свидетельства
без герба и без номеров и без ФИО

главная цель защиты авторских прав:
доказательство понимания
формул содержащих логарифм



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



Русская сОртирОвка пОлОвинами
экспорт
задумавшись возможно ли сортировать буквы
ответ: да сортировать буквы возможно

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

суммируя массив номеров букв
и разделив на количество элементов

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

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







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

читается через буквы О:
Русская сОртирОвка пОлОвинами

экспорт
сортировка олицетворяется в виде:
перемещается масса на расстояние

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

работа как сумма произведений
массы груза на перемещения = работа

и пока рассчитано: там где требует
обычная сортировка интеграл работы 20

там моя Русская сортировка половинами
требует интеграл работы 12 значит

Русская сОртирОвка пОлОвинами лучше


экспорт


быстрее чем: faster than:

selection insertion binary gnome comb
bubble cocktail heap smooth blockmerge
odd-even bitonic cyrcle

медленнее чем: slower than:

merge quick shell radix tim
экспорт
Моя Русская сортировка половинами
включена в сборник 100 сортировок

... под названием ... Сортировка Таноса
из кино Война Бесконечности Thanos sorting

Название единомышленник придумал и нормально

Если создаст тему на вопросы думаю отвечу
но не зная читателей свою тему пока не создаю
и если размещать то 1 таблицу и 1 программу
делая упор на ускорение человеческих сортировок

Русская сортировка половинами
или проще говоря:
Средне-арифметическая сортировка интегралов

экспорт
накануне создана новейшая визуализация

Русская Сортировка Половинами Визуально Данилин

Russian Sort Halves Visual Danilin

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

Русская Сортировка Половинами Ускоряет Данилин

Russian Sort Halves Accelerate Danilin
экспорт
накануне 1-го сентября созданы
учебные ютюбы милли лекции







в среднем смотрят ежедневно
и ещё возможно объединить

все ютюбы в единый всеобуч
сочинив новый сценарий

экспорт
За минувшее лето разобрана программа единомышленника
и создана улучшенная QB64 Qbasic рекурсивная
Русская сортировка половинами Russian Sorting Halves

показывающая результаты:
там где пузырьковая сортирует 100'ооо за 230 секунд
там где пузырьковая половинами 100'ооо за 70 секунд

там Рекурсия Русская сортировка половинами за 0,33 секунды
и миллион сортирует за 3,5 секунды именно в QB64 Qbasic
повторяю: 1'000'ooo сортирует за 3,5 секунды в QB64 Qbasic

и приветствую версии на других языках программирования
особенно где возможна визуализация и сравнение сортировок

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

Russian sorting halves important actions visualization


RussianSortingHalvesDAV: Excel рекурсия таблица AlgoLab
только изменённая мной часть RussianSortingHalvesDAV
исправлен ляп лишних вычислений среднего и без лишних переменных
и без замедляющего оформления: сортирует максимум 250 ячеек за 10 секунд
быстрее в 12 раз чем также ускоренная обычная сортировка

Код
'RussianSortingHalvesDAV
Private Sub SortThanos()
Dim LevelMax As Long
With Sheets("process")
.Activate
LevelMax = 2 * Log(lngArrayCount)
If LevelMax > 0 Then
Call RussianSortingHalvesDAV(1, lngArrayCount, 1, LevelMax)
End If
End With
End Sub
Private Sub RussianSortingHalvesDAV(j1 As Long, j2 As Long, Level As Long, LevelMax As Long)
Dim j As Long
Dim Sum As Long
Dim Average As Double
Dim Left As Long
Dim Right As Long
Dim Column As Long
Dim strAverage As String
With Sheets("process")
.Activate
If j2 - j1 < 1 Then
Exit Sub
End If
For j = j1 To j2
Sum = Sum + .Cells(1, j)
Next
Average = Sum / (j2 - j1 + 1)
Left = j1 - 1
Right = j2 + 1
For j = j1 To j2
If .Cells(1, j) <= Average Then
Left = Left + 1
Column = Left
Else
Right = Right - 1
Column = Right
End If
.Cells(7, Column) = .Cells(1, j)
.Cells(1, j) = ""
Next
For j = j1 To j2
.Cells(1, j) = .Cells(7, j)
.Cells(7, j) = ""
Next
.Rows("7:8").Delete
If Level < LevelMax Then
If Left >= j1 Then Call RussianSortingHalvesDAV(j1, Left, Level + 1, LevelMax)
If Right <= j2 Then Call RussianSortingHalvesDAV(Right, j2, Level + 1, LevelMax)
End If
End With
End Sub




RussianSortingHalvesDAV.bas: рекурсия QB64 Qbasic QuickBasic Basic рекурсия

Код
' Russian Sorting Halves DANILIN

DECLARE SUB RussianSortingHalvesDAV (j1!, j2!, Level!, LevelMax!)
CLOSE: OPEN "c:/N.txt" FOR INPUT AS #5
INPUT #5, n: PRINT n

DIM SHARED d(2, n) AS LONG

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

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

start = TIMER

LevelMax = 2 * LOG(n)
PRINT n, LevelMax

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

finish = TIMER

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

PRINT finish - start

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

END

SUB RussianSortingHalvesDAV (j1, j2, Level, LevelMax)

IF j2 - j1 < 1 THEN EXIT SUB

FOR j = j1 TO j2
Sum = Sum + d(1, j)
NEXT
Average = Sum / (j2 - j1 + 1)

Levo = j1 - 1
Prav = j2 + 1

FOR j = j1 TO j2
IF d(1, j) < Average THEN
Levo = Levo + 1
Column = Levo
ELSE
Prav = Prav - 1
Column = Prav
END IF

d(2, Column) = d(1, j)
NEXT

FOR j = j1 TO j2
d(1, j) = d(2, j):
NEXT

IF Level < LevelMax THEN
IF Levo >= j1 THEN CALL RussianSortingHalvesDAV(j1, Levo, Level + 1, LevelMax)
IF Prav <= j2 THEN CALL RussianSortingHalvesDAV(Prav, j2, Level + 1, LevelMax)
END IF

END SUB
экспорт
ускоряющее развитие:
вместо 2-мерного массива 2 массива d(N) и a(N)
и действительно успешно: сортирует 100ооо за 0,22 секунды

сортирует 1000ооо за 2,2 секунды
сортирует миллион за 2,2 секунды
sorts 1'000'000 in 2.2 seconds
сортирует 1'000'000 за 2,2 секунды


Код
' Russian Sorting Halves Danilin

DECLARE SUB RussianSortingHalvesDAV (Lev!, Prv!, Zikl!, Nauka!)
CLOSE
OPEN "c:/N.txt" FOR INPUT AS #5
INPUT #5, n: PRINT n

'n=1000000

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

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)

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 Nauka > 0 THEN
CALL RussianSortingHalvesDAV(1, n, 1, Nauka)
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 n: PRINT #2, d(i): NEXT

END

SUB RussianSortingHalvesDAV (Lev, Prv, Zikl, Nauka)

IF Prv-Lev < 1 THEN EXIT SUB

FOR i=Lev TO Prv
Summ=Summ+d(i)
NEXT
Sred=Summ/(Prv-Lev+1)

Levo=Lev-1
Prav=Prv+1

FOR i=Lev TO Prv
IF d(i) < Sred THEN Levo=Levo+1: Mesto=Levo: ELSE Prav=Prav-1: Mesto=Prav
a(Mesto)=d(i)
NEXT

FOR i=Lev TO Prv: d(i)=a(i): NEXT

IF Zikl < Nauka THEN
IF Levo >= Lev THEN CALL RussianSortingHalvesDAV(Lev, Levo, Zikl+1, Nauka)
IF Prav <= Prv THEN CALL RussianSortingHalvesDAV(Prav, Prv, Zikl+1, Nauka)
END IF

END SUB


Ashihara
Цитата(экспорт @ 10.10.2018, 21:23) *
сортирует 1000ооо за 2,2 секунды
сортирует миллион за 2,2 секунды
sorts 1'000'000 in 2.2 seconds
сортирует 1'000'000 за 2,2 секунды


На машине с процессором i8088?
экспорт
тема отстала от жизни и с тех пор версия
Русская сортировка половинами Russian Sorting Halves
PureBasic сортирует 1'000'000 за 0,3 секунды

о чём пишут 7 форумов включая импортные
и с тех пор убраны лишние переменные
и оставшиеся переменные названы универсально

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

;n=1234567

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)
  d(i)=n-i+1;
Next

PrintN(" First 20")
For k=1 To 20: Print(" "+ d(k)): Next: PrintN("")
PrintN(" Last 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 First 50")
For k=1 To 50: Print(" "+ d(k)): Next: PrintN("")
PrintN(" Last 20")
For k=n-19 To n : Print(" "+ d(k)): Next: PrintN("")

PrintN( "Time 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




подробнее на предыдущей странице форума

Русская сортировка половинами Russian Sorting Halves
PureBasic сортирует 1'000'000 за 0,3 секунды
O(N) = 3*N*LOG(N;2)




and
Несколько интересных задач (ссылка на видео: https://www.youtube.com/watch?v=dBpYgowQbCw )
На некоторую некорректность условий роптать не нужно, не в этом смысл.
al1981
Дамы и господа Инженеры.
Поясните мне неразумному (что то я подвис): энергия это у нас перемещение тела определенной массы на какое-то расстояние, вроде так.
Теперь пример: человек перемещается на какое-то расстояние пешком/ бегом/ на велосипеде/ на самокате, во всех этих случаях используется мышечная сила человека, т.е. человек потратит определенное количество калорий (джоулей). Из этого получается что бы мне (например) вместо занятий бегом можно кататься на самокате?
HeatServ
Цитата(al1981 @ 12.11.2018, 15:09) *
Поясните мне неразумному (что то я подвис): энергия это у нас перемещение тела определенной массы на какое-то расстояние, вроде так.
Это работа, а не энергия. Работа совершается, а энергия затрачивается.
Цитата(al1981 @ 12.11.2018, 15:09) *
Теперь пример: человек перемещается на какое-то расстояние пешком/ бегом/ на велосипеде/ на самокате, во всех этих случаях используется мышечная сила человека, т.е. человек потратит определенное количество калорий (джоулей). Из этого получается что бы мне (например) вместо занятий бегом можно кататься на самокате?
Да хоть на мотоцикле. Тоже энергия затрачивается, только меньше.
al1981
Цитата(HeatServ @ 12.11.2018, 15:16) *
Это работа, а не энергия. Работа совершается, а энергия затрачивается.
Да хоть на мотоцикле. Тоже энергия затрачивается, только меньше.

Энергия затрачивается на совершение работы, единица измерения у них одинаковая Дж (Н*м).
Из определения Дж видно, что это перемещение какого-то тела на какое-то расстояние. При использовании только мышечной силы организма я перемещаю себя из точки А в точку Б (определенную массу на определенное расстояние). При этом не важно как я это делаю бегом или на самокате.
При использовании мотоцикла я использую другой вид энергии (энергия хим связей в топливе).
HeatServ
Цитата(al1981 @ 12.11.2018, 15:32) *
Энергия затрачивается на совершение работы, единица измерения у них одинаковая Дж (Н*м).
Из определения Дж видно, что это перемещение какого-то тела на какое-то расстояние. При использовании только мышечной силы организма я перемещаю себя из точки А в точку Б (определенную массу на определенное расстояние). При этом не важно как я это делаю бегом или на самокате.
При использовании мотоцикла я использую другой вид энергии (энергия хим связей в топливе).
Используя велосипед или самокат энергии уходит меньше, потому что используется инерция, которая при ходьбе/беге гасится диссипативными силами.
al1981
Цитата(HeatServ @ 12.11.2018, 15:38) *
Используя велосипед или самокат энергии уходит меньше, потому что используется инерция, которая при ходьбе/беге гасится диссипативными силами.

Инерции тоже надо откуда то взяться, а берется она от изначального толчка ногой, т.е. я изначально затрачиваю энергию которой хватает на перемещение тела на определенное расстояние.
То есть возникают какие-то дополнительные силы, которые сложно поддаются учету? так?
Но при этом остается, что при перемещении меня (условно 1кН) на 1 км самокатом, я потрачу 1МДж, фигня какая то.
HeatServ
Цитата(al1981 @ 12.11.2018, 15:53) *
Инерции тоже надо откуда то взяться, а берется она от изначального толчка ногой, т.е. я изначально затрачиваю энергию которой хватает на перемещение тела на определенное расстояние.
То есть возникают какие-то дополнительные силы, которые сложно поддаются учету? так?
Но при этом остается, что при перемещении меня (условно 1кН) на 1 км самокатом, я потрачу 1МДж, фигня какая то.
Берём бетонный блок, роняем его на асфальт. Чтобы он начал двигаться, необходимо приложить силу страгивания. Чтобы дотащить до пункта Б, соответственно, надо ещё затратить некоторое количество энергии. Положили тот же блок на тележку, преодолеваем силу трения в подшипниках и силу трения качения, при этом энергии тратится много меньше. Кинематику чтоль в школе не проходили?
al1981
На сколько я знаю кинематика это когда движение рассматривают без выяснения причин вызвавших его. Так что я думаю это к делу не относится. Пример с бетонным блоком тоже хорош, но Вы говорите о немного о другом, о силе трения которую необходимо преодолеть для совершения передвижения. Изменяются пары материалов у которых происходит трение бетон/асфальт на металл/металл (чаще всего в подшипниках металл). Но энергия от этого не зависит, это так же остается Н*м.
HeatServ
Цитата(al1981 @ 12.11.2018, 16:28) *
На сколько я знаю кинематика это когда движение рассматривают без выяснения причин вызвавших его. Так что я думаю это к делу не относится. Пример с бетонным блоком тоже хорош, но Вы говорите о немного о другом, о силе трения которую необходимо преодолеть для совершения передвижения. Изменяются пары материалов у которых происходит трение бетон/асфальт на металл/металл (чаще всего в подшипниках металл). Но энергия от этого не зависит, это так же остается Н*м.
Совершается меньше работы, затрачивается меньше энергии. Сила действия (которая равна силе противодействия) в двух случаях совершенно разная.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.