на отсортированном векторе?
unique реализован на C, код в аттаче. Но даже глядя в код сложно сказать как это будет именно в машине — в зависимости от настроек компилятора могут включиться simd инструкции. В целом, это общее правило — сортированные данные получают новое свойство — отношение между элементами, являющиеся свойством позиции. Сортировка — это базовый алгоритм, не имеющий никакого отношения к R. Алгоритмов сортировки существует масса.
2600 строк, мама мия!!
Это же Си
И что удивляет? Там все достаточно прозрачно. + не один unique /* .Internal( duplicated(x, incomparables, fromLast, nmax)) [op=0] .Internal( unique(x, incomparables, fromLast, nmax)) [op=1] .Internal(anyDuplicated(x, incomparables, fromLast )) [op=2] */ + параметризация + разные типы + всякие юникоды + построение хешей... Это снаружи выглядит как одна строчка. а потом начинается R vs Python...
Что хорошо в R? Есть вопрос по функционалу — открываем исходники, получаем ответ. Все открыто, главное читать уметь. Гении могут сделать свои полезные мегадобавки.
объясните происходящее R 2^65 #> [1] 3.689349e+19 as.integer(2^65) #> [1] NA #> Warning message: #> NAs introduced by coercion to integer range python print(int(2 ** 66)) 73786976294838206464
Я поэтому и спросил здесь, потому что не был сил и времени читать самому
Вроде правильно посчитал)
что именно правильно? какова битность чисел?
В питоне другой подход к арифметике - там считай везде big int
что такое big int? что значит "считай"? если непонятно как ведет себя инструмент — с таким только на скамейке сидеть, в люди показываться нельзя.
https://en.m.wikipedia.org/wiki/Arbitrary-precision_arithmetic
Я с подобным столкнулся в паре С - Питон. Выяснил, что в Питоне "арифметика произвольной точности" или как-то похоже называется. И получается, что по факту нет ограничения на число типа int. Зато в Си этот счётчик на int прокрутился по кругу без ошибки и начал считать сначала.
Переполнение классическое да)
Тут на помощь придёт Кнут и Кормен, Алгоритмы сортировки
Обсуждают сегодня