сортировка алгоритм и ликбез про логарифм и МЫ
поискав по форуму и обнаружив очередной
математический пробел и проверив данную тему
на спец форумах и моими программами
сравнивающими одинаковые настраиваемые массивы
сообщаю быстрый алгоритм
на понятном миллионам языке basic
удобно приспосабливаемый в любую программу
а другие алгоритмы сортировки просто непонятные
и одновременно я создал мой алгоритм
как оказалось ускоряющий школьную сортировку
и если удастся заменить переменные на массив
тогда сможет сортировать без чужих алгоритмов
и заинтересовавшиеся изучите самостоятельно
что пишет интернет например
ru.wikipedia.org/wiki/Алгоритм_сортировки
' 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
на нечётном числе ячеек например 13 простое число
с записью в текстовый файл массива
после прохода каждого цикла
Возможно сортировать поместив в крайний левый столбец
порядковые номера и сортируя область возрастая или убывая
и легко перетасовывать готовые результаты поместив
в крайний левый столбец случайные номера и сортируя область.
и лучше смотрите как реализована визуализация линиями
и там ставьте внизу число линий 25 поменьше
https://airtucha.github.io/SortVis/
на понятном человеческом языке QBasic / QuickBASIC
найденная на форуме программистов
и небось сами не знают насколько быстрая
но сами сообщают мол не универсальная
Код:
<code class="hljs vbnet"> 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 </code>