mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 09:41:36 +00:00
Remove binary search translations
This commit is contained in:
parent
f1a1fe071a
commit
a0724570e4
@ -1,67 +0,0 @@
|
||||
---
|
||||
category: Algorithms & Data Structures
|
||||
name: Binary Search
|
||||
contributors:
|
||||
- ["Abhishek Jaisingh", "http://github.com/abhishekjiitr"]
|
||||
translators:
|
||||
- ["Gino Amaury", "https://github.com/ginoamaury"]
|
||||
lang: es-es
|
||||
---
|
||||
|
||||
# Búsqueda Binaria
|
||||
|
||||
## Por qué Búsqueda Binaria?
|
||||
|
||||
La búsqueda es uno de los problemas principales en el dominio de la ciencia de la computación. Hoy en dia hay mas de 1 billon de búsquedas por año, y necesitamos tener algoritmos que puedan hacer esto muy rápido. La búsqueda binaria es uno de los algoritmos fundamentales en la ciencia de la computación. Con el fin de explorarlo, vamos a construir por primera vez un esqueleto teórico y lo utilizaremos para implementar el algoritmo apropiadamente.
|
||||
|
||||
## Introducción
|
||||
|
||||
Un método sencillo para poner en práctica la búsqueda es hacer una búsqueda lineal, pero este método requiere mucho tiempo y este crece linealmente con la cantidad o el número de datos. es decir, empezar desde el elemento a la izquierda de la matriz [] y uno por uno compara x con cada elemento de la matriz [], si x coincide con un elemento, devuelve el índice. Si x no coincide con ninguno de los elementos, devuelve -1.
|
||||
|
||||
```
|
||||
Búsqueda Lineal: O (n) Tiempo lineal
|
||||
|
||||
Búsqueda Binaria: O ( log(n) ) Tiempo logarítmico
|
||||
```
|
||||
|
||||
```
|
||||
def search(arr, x):
|
||||
|
||||
for i in range(len(arr)):
|
||||
|
||||
if arr[i] == x:
|
||||
return i
|
||||
|
||||
return -1
|
||||
```
|
||||
|
||||
## Algoritmo de Búsqueda Binaria
|
||||
|
||||
El requisito básico para que la búsqueda binaria funcione es que los datos a buscar deben estar ordenados (en cualquier orden).
|
||||
|
||||
|
||||
### Algo
|
||||
|
||||
```
|
||||
La idea de la búsqueda binaria es usar la información de que la matriz está ordenada y así reducir la complejidad del tiempo a O(Logn). Básicamente ignoramos la mitad de los elementos después de la primera comparación.
|
||||
1) Compare x con el elemento del medio.
|
||||
2) si x coincide con el elemento del medio , retornamos el índice del elemento del medio.
|
||||
3) Si no coincide, si x es mayor que el elemento del medio, entonces x solo puede estar en la mitad derecha justo después del elemento del medio. Así que recurrimos a la mitad derecha.
|
||||
4) Si no (x es más pequeño) recurrimos a la mitad izquierda.
|
||||
Siguiendo la implementación recursiva de búsqueda binaria.
|
||||
```
|
||||
|
||||
### Notas finales
|
||||
|
||||
Hay otra forma de búsqueda binaria que es muy útil.
|
||||
|
||||
## Libros
|
||||
|
||||
* [CLRS EN](https://mitpress.mit.edu/books/introduction-algorithms)
|
||||
* [Algoritmos EN](http://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X)
|
||||
* [Diseño de Algoritmos EN](http://www.amazon.com/Algorithm-Design-Foundations-Analysis-Internet/dp/0471383651)
|
||||
|
||||
## Recursos en línea
|
||||
|
||||
* [GeeksforGeeks EN](http://www.geeksforgeeks.org/the-ubiquitous-binary-search-set-1/)
|
||||
* [Topcoder Tutorial EN](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/)
|
@ -1,66 +0,0 @@
|
||||
---
|
||||
category: Algorithms & Data Structures
|
||||
name: Binary Search
|
||||
contributors:
|
||||
- ["Abhishek Jaisingh", "http://github.com/abhishekjiitr"]
|
||||
translators:
|
||||
- ["Hughes Perreault", "https://github.com/hperreault"]
|
||||
lang: fr-fr
|
||||
---
|
||||
|
||||
# Recherche Binaire
|
||||
|
||||
## Pourquoi la Recherche Binaire ?
|
||||
|
||||
La recherche est un des principaux problèmes dans le domaine de l'informatique. De nos jours, il y a plus de 1 milliard de recherches par année, et nous avons besoin d'algorithmes pour faire cela rapidement. La recherche binaire est un des algorithmes les plus fondamentaux en informatique. Pour pouvoir l'explorer en détail, nous allons d'abord établir une base théorique, puis nous allons utiliser cette base pour implémenter l'algorithme en soi.
|
||||
|
||||
## Introduction
|
||||
|
||||
Une façon simple d'implémenter la recherche est de faire une recherche linéaire. Cependant, cette approche prend beaucoup de temps, et ce temps augmente linéairement avec la quantité de données. Par exemple, partons du premier élément d'un tableau t[], et un par un, comparons x avec chaque élément de t[]. Si x est égal à un élément, nous retournons l'index, si x n'égale aucun élément, nous retournons -1.
|
||||
|
||||
```
|
||||
Recherche Linéaire: O (n) Temps Linéaire
|
||||
|
||||
Recherche Binaire: O ( log(n) ) Temps Logarithmique
|
||||
```
|
||||
|
||||
```
|
||||
def search(arr, x):
|
||||
|
||||
for i in range(len(arr)):
|
||||
|
||||
if arr[i] == x:
|
||||
return i
|
||||
|
||||
return -1
|
||||
```
|
||||
|
||||
## L'Algorithme de Recherche Binaire
|
||||
|
||||
Le prérequis fondamental de la recherche binaire est que les éléments soient triés.
|
||||
|
||||
### Algo
|
||||
|
||||
```
|
||||
L'idée derrière la recherche binaire est d'utiliser le fait que le tableau est trié afin de réduire la complexité à O(Log(n)). Nous pouvons ignorer la moitié des éléments après la première comparaison.
|
||||
1) Comparons x avec l'élément du milieu.
|
||||
2) Si x est égal à cet élément, nous retournons l'index du milieu.
|
||||
3) Sinon, si x est plus grand que l'élément du milieu, alors x peut seulement être dans la dernière moitié du tableau. Donc, nous recommençons la procédure avec cette dernière moitié.
|
||||
4) Sinon (x est plus petit), nous recommençons la procédure avec la première moitié du tableau.
|
||||
Ensuite nous avons une implémentation récursive de la recherche binaire.
|
||||
```
|
||||
|
||||
### Note de la fin
|
||||
|
||||
Partie en construction.
|
||||
|
||||
## Livre
|
||||
|
||||
* [CLRS EN](https://mitpress.mit.edu/books/introduction-algorithms)
|
||||
* [Algorithmes EN](http://www.amazon.com/Algorithms-4th-Robert-Sedgewick/dp/032157351X)
|
||||
* [Design d'Algorithmes EN](http://www.amazon.com/Algorithm-Design-Foundations-Analysis-Internet/dp/0471383651)
|
||||
|
||||
## Ressources en ligne
|
||||
|
||||
* [GeeksforGeeks EN](http://www.geeksforgeeks.org/the-ubiquitous-binary-search-set-1/)
|
||||
* [Topcoder Tutorial EN](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/)
|
@ -1,76 +0,0 @@
|
||||
---
|
||||
category: Algorithms & Data Structures
|
||||
name: Binary Search
|
||||
contributors:
|
||||
- ["Abhishek Jaisingh", "http://github.com/abhishekjiitr"]
|
||||
translators:
|
||||
- ["Claudson Martins", "https://github.com/claudsonm"]
|
||||
lang: pt-br
|
||||
---
|
||||
|
||||
# Busca Binária
|
||||
|
||||
## Por Que Busca Binária?
|
||||
|
||||
Operações de busca são um dos principais problemas na Ciência da Computação.
|
||||
Atualmente existem mais de 1 trilhão de buscas por ano, e nós precisamos de
|
||||
algoritmos que possam realizá-las rapidamente. Busca binária é um dos algoritmos
|
||||
fundamentais em ciência da computação. A fim de explorá-la, iremos primeiro
|
||||
construir um conhecimento teórico, e então utilizá-lo para implementar o
|
||||
algoritmo apropriadamente.
|
||||
|
||||
## Introdução
|
||||
|
||||
Uma abordagem simples para implementar uma busca é realizar uma busca linear,
|
||||
mas algoritmos nessa abordagem levam muito tempo, o qual cresce linearmente de
|
||||
acordo com a quantidade ou número de dados. Por exemplo, iniciando do elemento
|
||||
mais a esquerda de arr[] e um a um comparar x com cada elemento de arr[], se x
|
||||
coincide com um elemento, retornar seu índice. Se x não coincide com nenhum dos
|
||||
elementos, retornar -1.
|
||||
|
||||
```
|
||||
Busca Linear: O (n) Tempo Linear
|
||||
|
||||
Busca Binária: O ( log(n) ) Tempo Logarítmico
|
||||
```
|
||||
|
||||
```
|
||||
def busca(arr, x):
|
||||
|
||||
for i in range(len(arr)):
|
||||
|
||||
if arr[i] == x:
|
||||
return i
|
||||
|
||||
return -1
|
||||
```
|
||||
|
||||
## Algoritmo de Busca Binária
|
||||
|
||||
O pré-requisito básico para que uma busca binária funcione é que os dados que se
|
||||
desejam buscar devem estar ordenados (em qualquer ordem).
|
||||
|
||||
### Pseudocódigo
|
||||
|
||||
```
|
||||
A ideia da busca binária é usar a informação de que o array está ordenado e
|
||||
reduzir a complexidade de tempo para O(Log n). Nós basicamente ignoramos metade
|
||||
dos elementos após uma comparação.
|
||||
|
||||
1) Compare x com o elemento do meio.
|
||||
2) Se x coincide com o elemento do meio, retorne o índice do meio.
|
||||
3) Senão Se x é maior que o elemento do meio, então x só pode estar no lado
|
||||
direito do elemento do meio. Portanto nós pulamos para a metade direita.
|
||||
4) Senão (x é menor) pulamos para a metade esquerda.
|
||||
|
||||
Essa é a ideia da implementação recursiva da busca binária.
|
||||
```
|
||||
|
||||
### Considerações Finais
|
||||
|
||||
Existem outras formas de busca binária que são muito úteis.
|
||||
|
||||
## Recursos Online
|
||||
|
||||
* [GeeksforGeeks](http://www.geeksforgeeks.org/the-ubiquitous-binary-search-set-1/)
|
||||
* [Topcoder Tutorial](https://www.topcoder.com/community/data-science/data-science-tutorials/binary-search/)
|
@ -1,62 +0,0 @@
|
||||
---
|
||||
category: Algorithms & Data Structures
|
||||
name: Binary Search
|
||||
contributors:
|
||||
- ["Abhishek Jaisingh", "http://github.com/abhishekjiitr"]
|
||||
translators:
|
||||
- ["Evan K.", "https://github.com/justblah"]
|
||||
lang: ru-ru
|
||||
---
|
||||
|
||||
# Двоичный (бинарный) поиск
|
||||
|
||||
## Зачем использовать двоичный поиск?
|
||||
|
||||
Поиск является одной из главных проблем в области вычислительной техники. На сегодняшний день осуществляется более одного триллиона поисковых запросов в год, поэтому нам нужны алгоритмы, которые могут делать это очень быстро. Двоичный поиск является одним из фундаментальных алгоритмов в информатике. Для его изучения мы освоим теорию, а затем используем её для реализации алгоритма.
|
||||
|
||||
## Вступление
|
||||
|
||||
Самый простой вариант поиска – линейный поиск, но этот подход занимает много времени, и растет линейно, пропорционально набору данных. Пример реализации – начинаем с крайнего левого элемента массива S, один за другим сравниваем искомое значение X с каждым элементом массива S, если X совпадает с элементом S, возвращаем индекс. Если X не совпадает ни с одним из элементов массива S, возвращаем -1.
|
||||
|
||||
```
|
||||
Линейный поиск: O (n) Линейная сложность
|
||||
|
||||
Двоичный поиск: O ( log(n) ) Логарифмическая сложность
|
||||
```
|
||||
|
||||
```
|
||||
def search(arr, x):
|
||||
|
||||
for i in range(len(arr)):
|
||||
|
||||
if arr[i] == x:
|
||||
return i
|
||||
|
||||
return -1
|
||||
```
|
||||
|
||||
## Алгоритм двоичного поиска
|
||||
|
||||
Для корректной работы двоичного поиска набор данных для поиска должен быть отсортирован (в любом порядке).
|
||||
|
||||
### Алгоритм
|
||||
|
||||
```
|
||||
Главная идея двоичного поиска заключается в использовании информации о том, что массив уже отсортирован,
|
||||
что и позволяет упростить сложность алгоритма до O(Logn). Мы попросту отбрасываем половину элементов набора сразу после одного сравнения.
|
||||
1) Сравнить X с элементом в середине набора S.
|
||||
2) Если X равен элементу в середине - возвращаем индекс среднего элемента.
|
||||
3) Если значение X больше, чем средний элемент набора, значит X находится в правой части набора. Повторяем алгоритм для правой половины набора.
|
||||
4) В противном случае (X меньше) повторяем алгоритм для левой половины набора.
|
||||
Это и есть рекурсивная реализация двоичного поиска.
|
||||
```
|
||||
|
||||
### На заметку
|
||||
|
||||
Существует и другая форма двоичного поиска, которая может быть полезна.
|
||||
|
||||
## На почитать
|
||||
|
||||
* [Проектирование, реализация и примеры](https://ru.wikipedia.org/wiki/%D0%94%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA)
|
||||
* [Описание алгоритма ИТМО](http://neerc.ifmo.ru/wiki/index.php?title=%D0%A6%D0%B5%D0%BB%D0%BE%D1%87%D0%B8%D1%81%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%B4%D0%B2%D0%BE%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA)
|
||||
* [Ошибки при реализации бинарного поиска](https://habrahabr.ru/post/146228/)
|
Loading…
Reference in New Issue
Block a user