Страницы: 1 2 След.
RSS
Алгоритмы
 
думаю... есть, наверно, какие-то интересные трюки, которые при ближайшем рассмотрении могут качественно облегчить жизнь любому программисту и гостям в этой сфере... нашла подборку книг на forcoder.ru - Algorithm... пока что скачала и листаю (без особого понимания, но с чувством полезности) парочку:
Алгоритмы: разработка и применение. Классика Computers Science - Автор: Дж. Клейнберг Дж., Е. Тардос
Encyclopedia of Algorithms - Автор: Ming-Yang Kao
... (в последнем) понравилась визуализация 3D-структуры, полагаю, БД multidimensional можно представить себе примерно так...

и почерпнуть для себя что-нибудь по вопросам оптимизации работы с данными такого рода... началась моя задумчивость на этой статье Подходы к обработке больших потоков информации при проектировании информационных систем... (таких ещё нет, но, мало ли жизнь разовьётся))...
ВСЁ-ТАКИ, мне кажется, чтобы работу с БД делать максимально комфортной - надо владеть некоторыми тонкостями в понимании Структуры данных и Способов работы с ними... кстати, думаю, понимание многомерности, как таковой, может сильно расширить понимание возможностей DAX, например... просто не очень легко изначально всё и сразу сопоставить и скрутить в своём представлении, чтобы потом реализовать Представление в XL...
***
Вот и решила открыть ветку, чтобы предложить всем, кому встречались какие-нибудь интересные алгоритмические трюки или специализированная СтОящая литература - запостите please названия, линки... и кто как и с чего (если задумывался когда-либо) начинал шлифовать свои алгоритмические способности... чувствую, есть много интересных секретов :) ... до боли неизвестных... намекайте (куда копать), посылайте (по линкам), излагайте (свои озарения и тревоги), проливайте свет... если не затруднит

Заранее Всем Спасибо
Изменено: JeyCi - 25.07.2016 13:22:07
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
возможно, для мат. вычислений (по коду) полезной может оказаться эта книга - Алгоритмические трюки для программистов Генри С. Уоррен мл - там же на на forcoder.ru - Algorithm... хотя отдельно для высшего пилотажа в составлении формул в xl - пока ничего кристально прозрачного не нашла (кроме, как отдельные примеры, выкладываемые периодически планетянами)
Изменено: JeyCi - 25.07.2016 13:17:38
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Я уже давно пользуюсь этим:


А если серьезно, спасибо за наводку. Иногда реально попадаются интересные алгоритмы, и есть смысл их закинуть сюда
F1 творит чудеса
 
Максим, спасибо - скачала отсюда Essential Copying and Pasting From Stack Overflow... для ознакомления
обязательно закидывайте ещё, если встретите... :)
Цитата
Максим Зеленский написал: Иногда реально попадаются интересные алгоритмы, и есть смысл их закинуть сюда
Изменено: JeyCi - 25.07.2016 22:08:17
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
альтернатива Словарю (Dictionary) - Recordset. созданный, не связанный с источником...
нюансы в ветке RunTime Error 7 - Out of Memory
хороший плюс:
1) сортировка кратко (паралельно - индексация - ускоряет поиск в дальнейшем по рекордсету)
2) выгрузка кратко
может быть минус:
1) по скорости - надо тестировать
Изменено: JeyCi - 17.09.2016 18:48:50
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Сводная таблица на основе двумерного массива - 1) ArrayToRecordset, 2) Recordset в PivotCaches.Add
но по нюансам SQL-запрос к 2-мерному массиву - не очень всё радужно - в одноимённой ветке...
там же Function rstArrayToRecordset
Изменено: JeyCi - 17.09.2016 18:46:53
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
по рисунку из #1 всё-таки оставлю линк на пояснения по терминологии Graph...
всё-таки алгоритмы реализуются применительно к конкретным Структурам Данных...
граф, как структура данных
(есть разные структуры данных - очереди, стеки, деревья  [как одна из многочисленных форм графа])
Изменено: JeyCi - 20.02.2017 22:47:04
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал:
листаю (без особого понимания, но с чувством полезности)
Тут есть програмка - достаточно прикольно и доступно показывает некоторые алгоритмы.
Как раз для таких как я)
 
Цитата
Dima S написал:Тут есть  програмка
Спасибо.
и тут Android Emulator для PC  в придачу к ней - если кто захочет посмотреть её на компе (не проверяла)
Изменено: JeyCi - 25.04.2017 07:49:28
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
:excl:  Algorithms - англ.яз сайт
(похоже на С++, но всё-таки алгоритмы)
Изменено: JeyCi - 29.06.2017 17:23:00
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
СОРТИРОВКА:
как в VBA отсортировать массив? - Слэн
(я смотрела здесь - по мотивам от Слэна делал ТС)
Сортировка двумерного массива по нескольким полям  (QuickSortNonRecursive) - Слэн
(там же ранее сортировка на temp-листе)
QSort (с рекурсией) - Dragokas
Сортировка данных внутри ячейки (BubbleSort) - SAS888
Сортировка двумерного массива на VB (VBA) - Educated Fool
ShellSort #14 - ** ТУРБО-ЁЖ **
Function UniqueSortArr ( (Методом бинарного поиска через коллекцию) - m_ch
Function GetUnicSplit (по сути то же) - B.Key
РАЗНОЕ ЗДЕСЬ #2
!! Сортировка в двумерном массиве VBA Excel - COM-надстройка на C++
Цитата
ZVI здесь #33:
Но на практике сортирока многомерного массива встречается редко и проще всего решается обычной сортировкой ячеек Excel-я.
P.S.
линки и идеи Здесь... - и по Поиску И по Сортировке
Изменено: JeyCi - 29.09.2019 06:59:00
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Фильтрация:
Array Filter (для массива) - наверно, не права, что не часто её использую  8) [но эта функция для 1-мерного массива] и своеобразно ведёт себя  :(
Код
    ' фильтрация массива значений словаря...
    For Each varItem In Filter(.Items, "r", , vbTextCompare)
      MsgBox varItem ' будет отфильтрованы Russia и Brazil !!!!!
    Next

Расширенный фильтр и немного магии (для диапазонов)
... но в SQL'е всё равно удобнее WHERE ...
***
поиск одиночного значения в упорядоченном (отсортированном) массиве - силами функций XL - [быстрее, чем фильтрацией]
Код
N = IsError(Application.Index(xxx, Application.Match(Find_position.Text, xx, 0), 1))
value_text = IIf(N, "", Application.Index(xxx, Application.Match(Find_position.Text, xx, 0), 1))
***
фильтрация на словаре - удобнее всего (для многомерного массива в том числе) - как мне кажется...
и очередное Сравнение быстродействия коллекций и фильтра от ZVI #38...  и там же Dictionary в #33... (всё в ветке: Подсчет количества уникальных значений в массиве)
Изменено: JeyCi - 09.07.2017 19:18:54
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
разрез Контекста Запроса (можно на примере dax) понимать в общем и целом - для понимания ссылочной целостности - при кодировании любых процессов...
p.s.
хотя отталкиваться, конечно же, удобнее от плоских таблиц
Изменено: JeyCi - 01.07.2017 10:43:17
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
всегда мне нравился:
удаление строк в большом Ексель файле DelRows - от ZVI
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Цитата
JeyCi написал:
удаление строк в большом Ексель файле  DelRows - от ZVI
Один из быстрейших алгоритмов, сам использую эту идею от ZVI в подходящих случаях.
Но нужно пользоваться с осторожностью если в массиве есть условное форматирование и формулы.
Все дело в .Sort
Решения:
1. Переводим условное форматирование в обычное (если нет формул), если есть см. п.2
2. Используем Union для удаления всех элементов по условию за раз (ест особая модификация алгоритма на Union, максимально быстрая, здесь на планете, где-то писал)
3. Если данных очень много с условным форматированием, формулами и прочими прелестями, максимально быстрый , как не удивительно, алгоритм через .Cut (Union метод сам по себе медленный)
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit спасибо за дополнения,
приложу линки (насколько поняла):
- 1. Переводим условное форматирование в обычное (вашей руки)
- 2. Используем Union для удаления всех элементов по условию за раз (Игорь - Educated Fool)
Скрытый текст

- 3. Если данных очень много с ... алгоритм через .Cut...
(особенно если много отбираемых данных для Union их)
Изменено: JeyCi - 29.06.2017 20:47:59
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Немного отошел от VBA, будет время гляну, выложу реализацию, если будет интересно. От  ZVI то же многое почерпнул.
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit написал: если будет интересно
будет интересно!
***
Ещё интересный трюк (не совсем алгоритм, но просто приятная возможность XL)
из 10 000 достаточно быстро 0,7с удалил примерно 1200 записей - все кроме "0" по ключевому столбцу С (автор в комменте)
Код
Sub DelSameRows()    'SAS888
    Dim x As Range, r As Range
    t = Timer
    ActiveSheet.UsedRange.EntireRow.Hidden = False
    Set r = ActiveSheet.Range([c1], [c65535].End(xlUp))
    Set x = r.Find(what:=0, LookAt:=xlWhole, LookIn:=xlValues)
    If Not x Is Nothing Then
        'r.EntireRow.Hidden = True
        Set r = r.ColumnDifferences(x)
        'r.EntireRow.Hidden = False
        r.EntireRow.Delete (xlShiftUp)
    End If
Debug.Print Timer - t
End Sub
 
Изменено: JeyCi - 30.06.2017 20:05:04
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
к #17
наверно, это всё-таки было здесь в #13-15:
Максимальная производительность при поиске и выделении (Select) большого массива несвязанных ячеек по условию - VBA
(пока не вникала, но впечатления автора по скорости радуют  :) )
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Добавлю свои 5 копеек. Из последнего понравилась книжка "Грокаем алгоритмы" Адитья Бхаргава. Кто читал Хайнлайна, тот поймет фишку с названием.
Очень доступно и с картинками про основные алгоритмы численных методов.

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

кстати когда-то про Хеш-таблицы  что-то под этим названием #12 пробовала (по примеру от Андрей VG - там же линк на его код)... но нужен NET.Framework для использования встроенной сортировки для хэш-таблиц...
P.P.S.
и тестирование по скорости было проведено на планете - Скоростной метод перебора значений не соотв. условию #21 !!
P.P.S
тестирование перебора уникальных (с помощью словаря, коллекции, фильтра, сортировки) - в Подсчет количества уникальных значений в массиве
P.P.P.S ВСЯ
Изменено: JeyCi - 22.08.2017 17:13:19
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
ПОИСК
ещё хотела бы оставить напоминание:
бинарный Поиск - это хорошо и быстро... Алгоритм Бинарного Поиска...
НО всё-таки суть поискового процесса "на-пальцах" лучше себе представлять - бывает (насколько поняла):
- Поиск в ширину - Breath First Search - дерево (организуется через Очередь, которая обрабатывается по логике FIFO) - находим корень, потом исследуем ветки (по сути, словарь, полагаю)... по общей сути "самый короткий путь возврата в вершину через Parent"... кстати Parent-Child - это связь "один-ко-многим"...
- Поиск в глубину - Depth First Search - (организуется через Стэк [очередь с хвоста], который обрабатывается по логике LIFO); и тут мне понравилось описание:
Цитата
  Главное отличие от поиска в ширину состоит в том, что при поиске в глубину в качестве активной выбирается та из открытых вершин, которая была посещена последней. Для реализации такого правила выбора наиболее удобной структурой хранения множества открытых вершин является стек: открываемые вершины складываются в стек в том порядке, в каком они открываются, а в качестве активной выбирается последняя вершина.
  При поиске в ширину вершина, став активной, остается ею, пока не будет полностью исследована ее окрестность, после чего она становится закрытой. При поиске в глубину, если в окрестности активной вершины x обнаруживается новая вершина y, то y помещается в стек и при следующем повторении цикла while станет активной. При этом x остается в стеке и через какое-то время снова станет активной. Иначе говоря, ребра, инцидентные вершине x, будут исследованы не подряд, а с перерывами.
... Просто иногда, полагаю, может давать выигрыш в быстродействии...
Скрытый текст

пока ещё не думала над тем, в каких реализациях поиска очевидно получить ускорение процесса, используя DSF... но мало ли вдруг понимание этих альтернатив пригодится...
(например, в многомерных БД? или при поиске в тексте? или в "динамическом программировании"- программировании динамических процессов, имею ввиду условно)
Изменено: JeyCi - 16.08.2017 10:11:10
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
!! Индексация
- идея от Слэна #11
p.s.
- VBA Найти и отметить уникальные записи #51 (ZVI) - номер строки тоже условно может быть индексом? (для сортировки)
(... как впрочем и в примере DelRows ранее...)
Изменено: JeyCi - 05.07.2017 18:53:49
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Найти минимальный период, для которого верно условие (возрастания минимумов или уменьшение максимумов)
Calculate Implied Volatility with the Bisection Method (корни нелинейного уравнения так можно найти) - компактный Do...Loop
а люди знающие говорят, что "бинарный поиск или метод половинного деления" всё одно (даёт максимальное приближение к цели)
***
... - это возможности для анализа временных рядов просто на память (линки здесь)...
Изменено: JeyCi - 05.07.2017 19:37:35
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
можно посмотреть Сравнительный Анализ подходов к структурированию инфо в Коде - Время и Память (интересная выкладка)... (таблица в конце статьи)
***
примеры - словарь-массивов #8, словарь-коллекций #19 (откуда линк на #22 словари для PT-Позиционирования)
***
избегать Memory Overflow...
Изменено: JeyCi - 15.07.2017 11:20:06
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
шахматка от ZVI здесь #11
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
#8  по обходу бинарных деревьев
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
спасибо Андрей VG - уже рекурсивнообошёл дерево XML #18
Изменено: JeyCi - 06.08.2017 20:28:00
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
т.к. JSON: JavaScript Object Notation, то всё-таки оставлю сравнение JSON vs XML... в любом случае такая (json) структура занимает меньше места для хранения, чем xml (хотя, конечно, похоже, что эта структура разработана прежде всего для Передачи инфо с Сервера)... но когда сервер особо не нужен, а многомерность не помешает... тоже по сути стройное дерево можно выстроить (мне пока подумалось)... Класс-Модуль на сайте для парсинга JSON'ов есть (и его первоисточник здесь), но обходить то дерево рекурсивно, или ещё как - по скорости надо смотреть, думаю и по высоте веток
p/s/
жаль что sql-jet не признаёт его (только csv и txt и др)... хотя ms server 2016 уже и с json работает
Изменено: JeyCi - 14.08.2017 10:16:17
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
рекурсивный обход json

Скрытый текст

P.S. нужные библиотеки (Tools-Reference) и модуль класса (для чтения json) - там указаны по линку...
N.B. on 64-bit Office, - ScriptControl isn't available... - код на RegExp  для чтения json будет более универсален в случае и для 32х и для 64х
Изменено: JeyCi - 13.08.2017 17:15:11
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
Страницы: 1 2 След.
Наверх