Вопросы с тегом «algorithm»

585
Как проверить, является ли число степенью 2

Сегодня мне нужен был простой алгоритм проверки, является ли число степенью 2. Алгоритм должен быть: просто Правильно для любого ulongзначения. Я придумал этот простой алгоритм: private bool IsPowerOfTwo(ulong number) { if (number == 0) return false; for (ulong power = 1; power > 0; power =...

571
Алгоритм возврата всех комбинаций k элементов из n

Я хочу написать функцию, которая принимает массив букв в качестве аргумента и количество этих букв для выбора. Скажем, вы предоставляете массив из 8 букв и хотите выбрать 3 буквы из этого. Тогда вы должны получить: 8! / ((8 - 3)! * 3!) = 56 Взамен массивы (или слова), состоящие из 3...

547
Простое объяснение наивной байесовской классификации

Мне трудно понять процесс наивного Байеса, и мне было интересно, может ли кто-нибудь объяснить это простым пошаговым процессом на английском языке. Я понимаю, что сравнение требует времени, которое произошло, как вероятность, но я понятия не имею, как данные обучения связаны с фактическим набором...

543
Какие алгоритмы вычисляют направления от точки A к точке B на карте?

Как провайдеры карт (такие как Google или Yahoo! Maps) предлагают маршруты? Я имею в виду, что они, вероятно, имеют реальные данные в некоторой форме, конечно, включая расстояния, но также, возможно, такие вещи, как скорость движения, наличие тротуаров, расписание поездов и т. Д. Но предположим,...

524
Какой самый эффективный способ сравнения с плавающей запятой и двойного сравнения?

Какой самый эффективный способ сравнить два doubleили два floatзначения? Просто делать это не правильно bool CompareDoubles1 (double A, double B) { return A == B; } Но что-то вроде: bool CompareDoubles2 (double A, double B) { diff = A - B; return (diff < EPSILON) && (-diff < EPSILON);...

517
Какой самый эффективный / элегантный способ разбить плоский стол на дерево?

Предположим, у вас есть плоская таблица, в которой хранится иерархия упорядоченного дерева: Id Name ParentId Order 1 'Node 1' 0 10 2 'Node 1.1' 1 10 3 'Node 2' 0 20 4 'Node 1.1.1' 2 10 5 'Node 2.1' 3 10 6 'Node 1.2' 1 20 Вот схема, где мы имеем [id] Name. Корневой узел 0 вымышленный. [0] ROOT / \...

494
Как построение кучи может быть O (n) временной сложностью?

Может кто-нибудь помочь объяснить, как сборка кучи может быть O (n) сложность? Вставка элемента в кучу происходит O(log n), и вставка повторяется n / 2 раза (остальные - листья и не могут нарушать свойство кучи). Таким образом, это означает, что сложность должна быть O(n log n), я думаю. Другими...

481
Почему Java hashCode () в String использует 31 в качестве множителя?

Согласно документации Java, хеш-код для Stringобъекта вычисляется как: s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] с использованием intарифметических операций, где s[i]это я й символ строки, nдлина строки, и ^указывает , возведение в степень. Почему 31 используется как множитель? Я понимаю, что...

464
Что такое алгоритм Hi / Lo?

Что такое алгоритм Hi / Lo? Я нашел это в документации NHibernate (это один из способов генерирования уникальных ключей, раздел 5.1.4.2), но я не нашел хорошего объяснения того, как это работает. Я знаю, что Nhibernate справляется с этим, и мне не нужно знать изнутри, но мне просто...

441
Лучший способ перевернуть строку

Я просто должен был написать функцию обратного преобразования строк в C # 2.0 (т.е. LINQ недоступен) и придумал это: public string Reverse(string text) { char[] cArray = text.ToCharArray(); string reverse = String.Empty; for (int i = cArray.Length - 1; i > -1; i--) { reverse += cArray[i]; }...

436
Как Google «Вы имели в виду?» Алгоритм работы?

Я разрабатывал внутренний веб-сайт для инструмента управления портфелем. Там много текстовых данных, названий компаний и т. Д. Я был очень впечатлен способностью некоторых поисковых систем очень быстро отвечать на запросы с помощью «Вы имели в виду: хххх». Мне нужно иметь возможность разумно...

434
Как обнаружить петлю в связанном списке?

Скажем, у вас есть структура связанного списка в Java. Он состоит из узлов: class Node { Node next; // some user data } и каждый узел указывает на следующий узел, за исключением последнего узла, который имеет нулевое значение для следующего. Скажем, есть вероятность, что список может содержать цикл...

401
Самый быстрый вид массива с фиксированной длиной 6 int

Отвечая на другой вопрос переполнения стека ( этот ), я наткнулся на интересную подзадачу. Какой самый быстрый способ сортировки массива из 6 целых чисел? Как вопрос очень низкого уровня: мы не можем предполагать, что библиотеки доступны (и сам вызов имеет свою стоимость), только простой C чтобы...