tag:blogger.com,1999:blog-1623745693417995987.post3955995400665523493..comments2022-01-18T17:40:57.028+03:00Comments on Бред программиста: Циклы. Нужны ли они?forcehttp://www.blogger.com/profile/09205548202595699526noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-1623745693417995987.post-48793004167237634652012-07-09T21:35:11.980+04:002012-07-09T21:35:11.980+04:00Массовое удаление элементов, вообще нетривиальная ...Массовое удаление элементов, вообще нетривиальная операция, и если нет явного требования по занимаемой памяти, то это просто фильтрация и лучше вернуть новый, правильный массив, чем мучать в цикле коллекцию (что, кстати, очень нечитабельно впоследствии выглядит).forcehttps://www.blogger.com/profile/09205548202595699526noreply@blogger.comtag:blogger.com,1999:blog-1623745693417995987.post-23253271622154381912012-07-09T21:33:05.261+04:002012-07-09T21:33:05.261+04:00Да, как-то не подумал, что ближе к tree sort получ...Да, как-то не подумал, что ближе к tree sort получилось, хотя за основу брал quick sort.forcehttps://www.blogger.com/profile/09205548202595699526noreply@blogger.comtag:blogger.com,1999:blog-1623745693417995987.post-46567092714133517542012-07-09T19:03:55.667+04:002012-07-09T19:03:55.667+04:00А ещё в foreach нельзя удалять элементы)Без цикла ...А ещё в foreach нельзя удалять элементы)Без цикла не обойтисьAnonymoushttps://www.blogger.com/profile/12445157112268302293noreply@blogger.comtag:blogger.com,1999:blog-1623745693417995987.post-39807669723278215862012-07-07T14:51:10.377+04:002012-07-07T14:51:10.377+04:00Однако надо заметить, что quicksort на LINQ уже не...Однако надо заметить, что quicksort на LINQ уже не совсем quicksort, а <a href="http://en.wikipedia.org/wiki/Tree_sort" rel="nofollow">tree sort</a>. Concat возвращает некий объект (пусть объект класса ConcatenatedEnumerable), содержащий ссылки на два IEnumerable. Функция Sort строит дерево поиска, которое представляется в виде дерева объектов ConcatenatedEnumerable. А затем в процессе итерации по этому объекту дерево линеаризуется. Конструктивное различие в том, что quicksort не требует дополнительной памяти для работы (O(1) не считается), а tree sort строит дерево, занимающее O(n) памяти.<br /><br />Еще менее очевидно, что получается с quicksort в подобной реализации на Haskell. Там в силу ленивости, полученное дерево не вычисляется полностью. Но вот отдельные ветки, видимо, вычисляются и занимают в среднем O(log n) памяти.<br /><br />Это достаточно интересный факт — то, что происходит с известными алгоритмами в условиях ленивых вычислений. Часто суть работы с точки зрения операций (на машине Тьюринга) меняется весьма неочевидным образом.Cyrilhttps://www.blogger.com/profile/14908668427828216312noreply@blogger.comtag:blogger.com,1999:blog-1623745693417995987.post-76415201962479435692012-06-28T18:24:17.559+04:002012-06-28T18:24:17.559+04:00Да циклы-то тоже не шедеврально отлаживать, особен...Да циклы-то тоже не шедеврально отлаживать, особенно какой-нить хитрый сумматор, который суммирует как-нибудь не так, из-за ошибки в данных на 100500-ом шаге :)forcehttps://www.blogger.com/profile/09205548202595699526noreply@blogger.comtag:blogger.com,1999:blog-1623745693417995987.post-14597078021281450292012-06-28T13:59:12.243+04:002012-06-28T13:59:12.243+04:00Дэн, где-то у вас баг - это ты про Майкрософт? Т.е...Дэн, где-то у вас баг - это ты про Майкрософт? Т.е. в линке ошибка? :)xorhttps://www.blogger.com/profile/00602805341422496788noreply@blogger.comtag:blogger.com,1999:blog-1623745693417995987.post-35078869004796629592012-06-27T04:28:39.006+04:002012-06-27T04:28:39.006+04:00а потом оказывается, что где-то у нас баг и вперед...а потом оказывается, что где-то у нас баг и вперед непонятно как отлаживать эти linq запросы ;)Anonymousnoreply@blogger.com