Remove binary search translations

This commit is contained in:
Boris Verkhovskiy 2024-05-12 05:26:51 -06:00
parent f1a1fe071a
commit a0724570e4
4 changed files with 0 additions and 271 deletions

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)

View File

@ -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/)