Основные алгоритмы сортировки и поиска для программирования (Java)

1

Где я могу изучать алгоритмы программирования (java и т.д.), Потому что когда я ищу такие программы, как перестановки, нарушения, сортировки и т.д., Я всегда нахожу математические алгоритмы.

Пример: подсчеты

Отсюда вытекает следующее соотношение:

!n = (n - 1) (!(n-1) + !(n-2)).\,
where !n, known as the subfactorial, represents the number of derangements, with the starting values !0 = 1 and !1 = 0.

Notice that this same recurrence formula also works for factorials with different starting values. That is 0! = 1, 1! = 1 and

n! = (n - 1) ((n-1)! + (n-2)!)\,
which is helpful in proving the limit relationship with e below.

Also, the following formulae are known:[4]

!n = n! \sum_{i=0}^n \frac{(-1)^i}{i!},
!n = \left\lfloor\frac{n!}{e}+\frac{1}{2}\right\rfloor , \quad n\geq 1,
!n = \left[ \frac{n!}{e} \right] , \quad n\geq 1

Еще один пример, который я нахожу, - это когда я просматриваю сортировку в java. Я вижу O (n log n) или O (log n) терминологию, которые я вообще не понимаю. Я не очень хорошо разбираюсь в математике, но в то же время я очень заинтересован в программировании. Помогите мне найти книгу или сайт, чтобы понять алгоритмы сортировки, необходимые для языков программирования

  • 0
    Программирование - это многое для большего количества людей. Существует поиск конечной последовательности шагов, систематически достигающих желаемого результата для всех допустимых входных данных, описывающих его, и есть кто-то или что-то, выполняющее его. Кодирование алгоритма на языке программирования - это шаг к тому, чтобы компьютер давал результаты. Одна идея - начать с книги, на ум приходит красивый код . Кроме того, существуют учебные пособия - сложно представить, как научиться программировать без практики.
  • 1
    В «прекрасной» серии есть хорошие книги, но я бы не стал рекомендовать ее в качестве отправной точки.
Теги:
algorithm
sorting

3 ответа

3
Лучший ответ

Я взял алгоритмы I и алгоритмы II на Coursera, они великолепны. Существует также учебник для этого курса.

  • 0
    Круто, мой друг, офигенно. Я только что зарегистрировался на сайте и бесплатно посещал сессию онлайн. Тем не менее, Алгоритмы часть I сессий была закончена. Любой способ посмотреть сеансы снова или я должен ждать следующего графика.
  • 0
    @KiritiKomaragiri Я не уверен насчет этого конкретного курса, но я записался в Принципы реактивного программирования задолго до его окончания и теперь могу смотреть видео и тому подобное.
6

Алгоритмы касаются математики. Они языковые-агностики. Вы можете реализовать алгоритмы на любом языке, если вы знаете его грамматику, то есть ее базовые типы данных, операторы, принятие решений и т.д. Многие языки предоставляют библиотеки, реализующие известные и/или полезные алгоритмы или функциональные возможности (например, для сортировки, шифрования и т.д. )

Поэтому поиск "java-алгоритмов" - это плохая строка поиска. Вы должны искать "основы программирования Java",

Если вы хотите понять, что стоит за красотой алгоритмов, я настоятельно рекомендую прочитать эту замечательную книгу: "Programming Pearls" (2-е издание). Первое издание было написано в 1983 году, и интересно понять, почему автор решил написать второе издание 17 лет спустя.

Вы также можете посмотреть онлайн-лекции, например, MIT.

Что касается O (log (n)) части вашего вопроса, это обозначение, чтобы выразить вычислительную сложность алгоритма (важно, когда вы хотите понять производительность, которую вы можете ожидать от алгоритма, или если вы хотите сообщить о производительности ваших собственных алгоритмов).

Для Java вы можете начать с учебников Oracle.

2

O (n log n) или O (log n) - обозначение Big O. Я связан с разделами, где объясняются наиболее распространенные случаи (например, примеры, о которых вы просили). Существует также qaru.site/questions/89/...

См. Учебники по алгоритму Topcoder для получения хороших статей.

Важность алгоритмов - хороший учебник (объясняет основные алгоритмы и дает примеры для нотации Big O).

Основы комбинаторики охватывают вашу проблему -derangements.

Для books- см. Введение в алгоритмы и алгоритмы, 4-е издание.

  • 0
    Даже я был в состоянии искать нотацию Big O, но моя главная проблема заключалась в понимании этих формул, таких как сигма, f (n) и т. Д. Если бы вы могли предложить мне книгу или что-то еще, чтобы понять, что маленькие математические формулы были бы великолепны! В любом случае, спасибо за ответ
  • 0
    Спасибо Бартош. Это действительно полезно!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню