6Apr2008
Archivado en: Programación, Visual Basic
Autor: Angel López
Continuando con los métodos de búsqueda, seguimos con la búsqueda binaria. Este método es el que habitualmente utilizamos los humanos para encontrar un determinado elemento en una lista previamente ordenada.
El algoritmo es el siguiente:
- Se compara el valor buscado con el del elemento central del vector
- Si coinciden, se ha encontrado el numero y se finaliza la búsqueda.
- Si no coinciden, se determina si el valor buscado debe estar en la mitad izquierda o derecha del vector, dependiendo de si es inferior o superior, respectivamente, del elemento central.
La posición del elemento central del vector es calculado con la siguiente formula:
pMitad = int((pInicial + pFinal)/2)
Donde pInicial y pFinal son las posiciones inicial y final del subVector que se está considerando.
- En la mitad donde se deba continuar la búsqueda, se continua de la misma manera, es decir; se compara el valor buscado con el elemento central de esa mitad.
- Si coinciden, se ha encontrado el numero y se finaliza la búsqueda.
- Si no coinciden, se determina en cúal de las dos mitades de esta subMitad debe estar el valor buscado.
- Se continua de este modo (dividiendo el vector en subMitades) hasta que la búsqueda:
- Finalice con exito (se encuentre el elemento)
- Se finalice sin exito (no se encontro el elemento)
- Cuando pInicial sea mayor o igual a pFinal y su contenido sea diferente del valor buscado, entonces se considera que el valor buscado no existe en el vector.
Este es el algoritmo:

Aquí está el código en VB.Net
VB.NET:
-
Public Class Form1
-
Dim vec(999) As Integer
-
Dim a As Integer
-
-
Private Function quicksort(ByVal vec() As Integer, ByVal primero As Integer, ByVal ultimo As Integer) As Array
-
Dim a, b, piv, Npiv, aux As Integer
-
piv = vec(primero) 'sacamos pivote
-
Npiv = primero
-
-
For a = primero To ultimo
-
If a <> Npiv Then 'si el pivote no se esta queriendo comparar con el mismo pivote
-
If vec(a) <piv Then
-
'mandamos los numeros a la izquierda
-
aux = vec(a)
-
-
'recorremos sub-vector (desde piv hasta vec(a))
-
For b = a To Npiv + 1 Step -1
-
vec(b) = vec(b - 1)
-
Next
-
-
vec(Npiv) = aux 'colocamos numero menor a la izquierda de piv
-
Npiv += 1 'actualizamos posicion de piv
-
End If
-
End If
-
Next
-
-
'enviamos recursivamente el vector a la izuierda de piv
-
If (Npiv - primero <> 0) Then 'si el sub-vector de la izquierda tiene elementos, entonces se hace recursividad
-
vec = quicksort(vec, primero, Npiv - 1)
-
End If
-
-
'enviamos recursivamente el vector a la derecha de piv
-
If (ultimo - Npiv <> 0) Then 'si el sub-vector de la derecha tiene elementos, entonces se hace recursividad
-
vec = quicksort(vec, Npiv + 1, ultimo)
-
End If
-
-
Return vec
-
End Function
-
-
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
-
Dim rand As New Random
-
Dim cad As String = ""
-
-
For a = 0 To 999
-
vec(a) = rand.Next(0, 4000)
-
Next
-
-
quicksort(vec, 0, vec.Length - 1)
-
-
For a = 0 To 999
-
cad &= vec(a) & vbNewLine
-
Next
-
txt.Text = cad
-
End Sub
-
-
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
-
Dim I, D, P, N, band As Integer
-
N = txtn.Text
-
band = 0
-
I = 0
-
D = vec.Length - 1
-
r.Text = ""
-
-
While (I <= D And D <= vec.Length - 1 And I <= vec.Length - 1 And band = 0)
-
P = CType((I + D) / 2, Integer)
-
If (vec(P) = N) Then
-
band = 1
-
r.Text = N & " fue encontrado en la posición " & P
-
Else
-
If (N <vec(P)) Then
-
D = P - 1
-
Else
-
I = P + 1
-
End If
-
End If
-
End While
-
-
If (r.Text.Length = 0) Then r.Text = "# no encontrado"
-
End Sub
-
End Class
Aquí te dejo el archivo completo para que te lo descargues
Descarga
Saludos!
vitiligo
August 11th, 2008 at 4:35 am
The vitiligo pamphlet vitiligo is a skin,an introduction to vitiligo by the vitiligo society.
meemnixedalon
January 3rd, 2010 at 2:09 am
Отличный сайт! ен6
PaunkCefdeend
January 3rd, 2010 at 3:06 pm
Интересная статья, но не все понял. 4р
UnlaclePeve
January 3rd, 2010 at 4:41 pm
Давно думал на эту тему, а тут можно подробнее изучить 7а
anompoump
January 4th, 2010 at 4:05 am
Занес в закладки и жду новых статей 6л
InwaptotogCop
January 4th, 2010 at 9:29 am
Некоторые моменты хотелось бы уточнить 8в
Nerarrare
January 4th, 2010 at 12:15 pm
Буду с нетерпением ждать следующую статью 8л
MitImpaivaMip
January 5th, 2010 at 7:31 am
С нетерпением жду следующих порбликаций 5в
Incedarocrall
January 5th, 2010 at 12:37 pm
Очень хорошо пишет автор 7п
eneptsalt
January 5th, 2010 at 3:04 pm
Приятно было почитать эту статейку 5п
Pypegymnpew
January 6th, 2010 at 3:13 am
Некоторые моменты хотелось бы уточнить 6а
alireeannoume
January 6th, 2010 at 12:28 pm
Занес в закладки, буду следить дальше 5а
UnpamLamn
January 6th, 2010 at 3:13 pm
Очень понравилась статья, только кое-что хотелось бы уточнить 5ф
preebrapype
January 7th, 2010 at 12:16 pm
Мне понравился стиль автора 3ы
Everiegem
January 7th, 2010 at 2:01 pm
Очень понравилась статья, но кое-что не совсем понял 4п
kelpeclanvamn
January 7th, 2010 at 3:32 pm
Понравился стиль автора, жду ещё статей 4п
LishInhenia
January 8th, 2010 at 2:35 am
С нетерпением жду следующих статей 4ж
triectath
January 9th, 2010 at 3:58 am
Прикольно пишете, жду следующих статей 4д
gyncoppople
January 9th, 2010 at 6:49 am
Некоторые моменты не понял, но интересный материал 5л
aidenseme
January 9th, 2010 at 10:35 am
Много интересного узнал 3д
Poencegok
January 9th, 2010 at 1:26 pm
Интересно автор пишет, только некоторые моменты хотел уточнить 4ф
HelpHinuine
January 9th, 2010 at 4:34 pm
Прикольно автор подобрал материал 3а
PelmsceltyPew
January 10th, 2010 at 2:55 am
Очень понравился стиль автора 3ю
GISSARTUDDISY
January 10th, 2010 at 5:33 am
Очень понравились статьи 3д
geaggeclino
January 10th, 2010 at 12:56 pm
Респект автору, мне очень понравилось 2ф
HectGoortioff
January 10th, 2010 at 11:50 pm
Отличную подборочку сделал автор, взял на заметку 2й
BeidgitsBut
January 11th, 2010 at 3:27 am
Утащил в закладки, интересно пишет автор 5х
unubobappeamp
January 11th, 2010 at 9:56 am
Мне понравился стиль автора, очень креативно 3р
Royacibia
January 11th, 2010 at 1:33 pm
Очень интересные статьи 2р
OptioroAstoni
January 11th, 2010 at 10:42 pm
Очень понравился стиль автора 4и
Terydramy
January 12th, 2010 at 2:35 am
Мне очень понравилась подборка статей 3м
blinatriatS
January 12th, 2010 at 5:42 am
Прикольные статьи подобраны 2а
mateplamb
January 12th, 2010 at 8:19 am
Автор точно не пожалел времени на подбор материала 2д
Elaliaabeta
January 12th, 2010 at 11:26 am
Мне понравилась подборка автора 3а
Iodinonup
January 12th, 2010 at 2:56 pm
С удовольствием почитал статьи, много нового узнал 3м
coaskMicshido
January 12th, 2010 at 10:56 pm
Читал с удовольствием, автор постарался 3ч
JophepeBreeft
January 13th, 2010 at 1:36 am
Мне очень понравилась подборка, интересный материал 2с
shervehef
January 13th, 2010 at 7:20 am
Очень интересный материал подобран 2я
spoixflox
January 13th, 2010 at 12:07 pm
Очень интересно было ознакомиться с подборкой 3с
InceneKaw
January 13th, 2010 at 2:41 pm
Очень понравился стиль автора, прикольно 3м
exasiablehose
January 14th, 2010 at 12:21 am
Понравился стиль автора, прикольно 2я
shourfrop
January 14th, 2010 at 2:20 am
Респект автору, интересная подборочка 3ч
ScepUnseree
January 14th, 2010 at 7:23 am
Интересные статейки собраны, мне понравилось 2с
aftedgedula
January 14th, 2010 at 10:07 am
Обязательно почитайте, мне понравилось 2ч
fluolloky
January 14th, 2010 at 12:51 pm
Почитал статьи и мне очень понравились 2в
ReizeRink
January 14th, 2010 at 3:50 pm
Хорошо автор потрудился на славу 2я
reubbopausa
January 14th, 2010 at 11:43 pm
Мне очень понравились статьи, хорошая подборочка 2ф
MumbRoorb
January 15th, 2010 at 3:37 am
Неплохо потрудились над сбором информации 2й
UnrekFeem
January 15th, 2010 at 5:31 am
Очень интересные статьи попались 2ч
procadarLok
January 15th, 2010 at 7:31 am
Мне очень понравился блог 3ч
lovileacleTiz
January 15th, 2010 at 9:28 am
Прям зачитался, интересно было 4ы
belaEffelia
January 15th, 2010 at 1:32 pm
Очень понравился контент, прикольно читать 4с
TydayCozy
January 16th, 2010 at 3:41 am
С огромным удовольствием ознакомился с материалом блога 3и
ThevaVifiaree
January 16th, 2010 at 1:31 pm
Мне очень понравился стиль автора 5ч
konditerDroda
January 16th, 2010 at 7:48 pm
Не тратя лишних слов.
Swiscikilky
January 17th, 2010 at 4:28 am
Интересная информация подобрана автором 4с
EngedsEnquise
January 17th, 2010 at 9:54 am
Прочитал с удовольствием респект автору 5м
jegotiegree
January 17th, 2010 at 10:43 pm
Очень рекомендую почитать блог, интересный материал 5ч
NelmBommece
January 18th, 2010 at 2:27 am
Получил удовольствие от прочтения 5м
Gergeardy
January 18th, 2010 at 4:09 am
Мне погнравился стиль автора, очень неплохо 4с
Prigiosmemi
January 18th, 2010 at 6:09 am
Получил удовольствие от ознакомления с новым материалом 6м
kazantiprDroda
January 18th, 2010 at 7:01 am
Полностью разделяю Ваше мнение. В этом что-то есть и идея хорошая, поддерживаю.
Poeriopriehak
January 18th, 2010 at 10:49 am
Получил удовольствие от представленного материала 5м
IrrimeAccuche
January 18th, 2010 at 1:18 pm
Очень неплохая подборочка 4м
PeallyNinaiff
January 18th, 2010 at 3:46 pm
Достаточно актуальный материал, можно обсудить 5м
Waitoteptox
January 24th, 2010 at 12:22 pm
Если вам не нравится этих именно ВсЁ не осилил зараз(((
piotiargo
January 25th, 2010 at 12:12 am
Хорошо я её ещё день назад просматривал Много нового узнал!
Dausanutnab
January 26th, 2010 at 3:25 am
вообщем описанные выше, развивать ) ВсЁ не осилил зараз(((
Usangeany
January 27th, 2010 at 4:49 pm
мне пока других уверен тоже ? посмотрите что вышло
HooxyBock
January 27th, 2010 at 6:32 pm
ггг так что делать-то? ? это та вещь
TrassePet
January 27th, 2010 at 7:45 pm
не думая так что делать-то? . Так, что привыкайте граждане
Trud-El
January 31st, 2010 at 6:36 am
Извините, что я Вас прерываю, мне тоже хотелось бы высказать своё мнение.
ishim-nig
January 31st, 2010 at 8:00 am
Полностью разделяю Ваше мнение. Мне кажется это отличная идея. Я согласен с Вами.
cosmos-BlekMerve
February 1st, 2010 at 3:43 pm
Шикарная вещица!
spinvania
February 15th, 2010 at 11:49 am
Прикольная статья, но не все понял 3м
appassisasp
February 15th, 2010 at 2:16 pm
Мне понравилось направление мвсли 5м
Ivan Lapkin
February 15th, 2010 at 5:30 pm
Мне вот кажется, что такое написать мог то ли креативный гений, то ли героиновый наркоман
Assomacar
February 16th, 2010 at 12:50 am
Интересно было почитать темку 4м
Dupetedusef
February 17th, 2010 at 12:03 am
Получил эстетическое удовольствие от прочтения 6м
tutsaneunny
February 17th, 2010 at 2:03 am
Понравилась статья, только некоторые моменты хотелось бы уточнить 4п
mosoffort
February 17th, 2010 at 3:56 am
Кое что хотелось бы уточнить у автора 5п
abinfepaype
February 17th, 2010 at 5:52 am
Понравилось очень читать 3а
PreeraLow
February 17th, 2010 at 11:54 pm
Неплохая подборочка материала 5а
MumLourlEmodo
February 17th, 2010 at 11:56 pm
Понравился материал, читать интересно 3п
kicaccupToodo
February 18th, 2010 at 2:07 am
Большую работу провел автор, кое-что хотелось бы уточнить 5м
nomGeanna
February 18th, 2010 at 2:08 am
Очень понравился материал, читал с удовольствием 5я
atteltalona
February 18th, 2010 at 4:00 am
Мне понравился стиль, кое-что хотелось бы поподробнее узнать 4ч
Scebrabeerdom
February 18th, 2010 at 4:03 am
Мне понравилась подборочка материала 5м
BealayDaure
February 18th, 2010 at 6:19 am
Некоторые моменты хотел уточнить 5а
Tinuereed
February 18th, 2010 at 6:21 am
Получил удовольствия от прочитанного материала 5а
Emellorowlern
February 18th, 2010 at 8:57 am
Понравился стиль автора, неординарный 5с
Effockhauch
February 18th, 2010 at 11:57 am
Понравилась темка, очень познавательно 5м
Shilyclishaks
February 18th, 2010 at 10:53 pm
Прикольно читать такого плана статьи 4с
Fuctobece
February 19th, 2010 at 3:16 am
яю59AB28B5;L=>
Antinnagriept
February 19th, 2010 at 5:34 am
Очень понравился стиль автора, жду ещё 5м
bialueree
February 19th, 2010 at 5:36 am
С нетерпением жду новых материалов 5ч
briffhing
February 19th, 2010 at 8:05 am
С удовольствием ознакомился со статейками 5и
dumenountee
February 19th, 2010 at 8:06 am
Оригинальный текст получился, с удовольствием почитал 6м
BikeJuffice
February 19th, 2010 at 11:02 am
Мне понравилась тема, только кое-что хотелось бы спросить 6м
amolladrelo
February 20th, 2010 at 12:45 am
Некоторые вещи даже не знал, спасибо автору 5и
amanoSmamCody
February 20th, 2010 at 5:06 am
С удовольствием почитал статьи, интересно написано 5и
sursuiversali
February 20th, 2010 at 7:41 am
С нетерпением жду продолжения 5м
Zoophospiff
February 20th, 2010 at 11:55 am
Подписался на продолжение темы, очень интересно 5ч
VakadokeRag
February 22nd, 2010 at 2:26 am
Подписался и жду продолжения 5м
smaphonantina
February 22nd, 2010 at 12:57 pm
С нетерпением жду продолжения 5и
UnmamnJus
February 24th, 2010 at 12:02 am
Мне очень понравилось читать, хорошая подборка материала 5и
Reobbytex
February 24th, 2010 at 3:38 am
С огромным удовольствием прочитал, очень понравилось 6м
CegeAxode
February 24th, 2010 at 3:38 am
С нетерпением жду последующих обновлений в теме 7ь
sordicyclonry
February 24th, 2010 at 6:11 am
Даже не заметил как пролетело время за просмотром 7и
Affiggips
February 24th, 2010 at 11:30 am
Прикольно пишете, но есть много вопросов 6ы
Slovar-mt
February 24th, 2010 at 12:56 pm
Совершенно верно! Это хорошая мысль. Призываю к активному обсуждению.
LogoxiffVor
February 25th, 2010 at 12:55 am
С огромным удовольствием просмотрел статьи 6ф
Pedaexcibia
February 25th, 2010 at 2:56 am
С нетерпением жду продолжения темки 8в
sotassiva
February 25th, 2010 at 5:45 am
Хотел бы обсудить некоторые статьи 3в
fiddisioccuts
February 25th, 2010 at 7:45 am
Постарался атор над подбором темок, респект 6ц
ovawsMoorse
February 25th, 2010 at 7:46 am
Отлично провел время за просмотром статей 7р
Dofsaparmasog
February 25th, 2010 at 9:31 am
Понравилась тема, кое что хотелось бы обсудить 5п
abiliaAffet
February 25th, 2010 at 11:42 am
Мне очень понравились статьи, актуально 7ы
AffolfOcealge
February 26th, 2010 at 2:00 am
Очень понравилась темка 4а
RainiaFet
February 26th, 2010 at 3:32 am
С огромным удовольствием просмотрел 7р
elarkadumma
February 26th, 2010 at 4:24 am
Получил удовольствие от прочтения 7р
rortroabadume
February 26th, 2010 at 6:28 am
Кое-что хотелось бы уточнить 7н
stansaluels
February 26th, 2010 at 11:06 am
Получил удовольствие от материала 7а
unlannaAnipse
February 26th, 2010 at 11:56 am
Могу предложить зайти на сайт, где есть много информации на интересующую Вас тему.
Acrorsgoogy
February 27th, 2010 at 12:17 am
Мне понравился материал и его компановка 9ш
GabEmbobjaiff
February 27th, 2010 at 2:23 am
Очень нравится авторский подход 6г
ensurtuts
February 27th, 2010 at 2:25 am
Здорово все получилось 9у
bregreeCruigN
February 27th, 2010 at 4:28 am
Мне очень понравилось 6е
Getsaifathe
February 27th, 2010 at 7:20 am
Хорошо поработал автор 8г
X-fatrol
February 27th, 2010 at 10:26 am
Не очень люблю такие тексты %:(
Unlignalk
February 28th, 2010 at 10:09 am
Мне понравился стиль и подборочка неплохая 0а
stothisrege
February 28th, 2010 at 11:22 pm
С удовольствием отмечу отличную подборку статей у автора 4п
Muglelursehig
March 1st, 2010 at 3:50 am
Мне понравился подобранный материал, зачетно 0п
pyncsmicype
March 1st, 2010 at 6:37 am
Очень прикольно читать подборочку, респект автору 5п
Vofbeadelyday
March 1st, 2010 at 10:59 am
Некоторые моменты только хотелось бы уточнить 8п
Eviliafiz
March 1st, 2010 at 11:42 am
В этом что-то есть. Теперь стало всё ясно, большое спасибо за помощь в этом вопросе.
thehexzew
March 1st, 2010 at 1:45 pm
Подписался и с нетерпением жду продолжения 9ь
Kommunist
March 1st, 2010 at 11:18 pm
В Вашей RSS нельзя получать полные тексты записей, что ли?
opedlotlikado
March 2nd, 2010 at 12:53 am
Респект автору, хорошо поработал 9ы
Adhediuri
March 2nd, 2010 at 12:54 am
Зачетный сайт, жду новенького материала 8ф
Engagszen
March 2nd, 2010 at 3:29 am
Достаточно полная подборка, молодец автор 5п
Tottatorb
March 2nd, 2010 at 3:31 am
Мне очень понравилось, но некоторые моменты хочу уточнить 0ф
Icectaffelf
March 2nd, 2010 at 5:41 am
Мне понравилось просматривать материал 8т
SiptSuewsuipt
March 2nd, 2010 at 9:27 am
С удовольствием почитаю продолжение 6я
eagecymax
March 2nd, 2010 at 11:50 am
Очень неплохо подобраны статьи 2и
TamPrino
March 4th, 2010 at 11:46 am
Логотип мне нравится:)
Argoy-Make
March 4th, 2010 at 1:02 pm
Не нужно пробовать все подряд
Master-mub
March 4th, 2010 at 3:39 pm
Какое симпатичное сообщение
HankMoody
March 6th, 2010 at 11:22 pm
У Вас долго загружается блог - видимо, хостинг плоховат
Baraholka-ol
March 7th, 2010 at 9:06 am
Отличное и своевременное сообщение.
Faceroll
March 8th, 2010 at 9:49 pm
Прошу прощения за оффтопик.
Вы продаете сквозные ссылки с сайта? Если да, свяжитесь со мной, плз!
TedMosby
March 9th, 2010 at 7:48 pm
На словах ты Лев Толстой, а не деле … простой!
E-man
March 10th, 2010 at 3:35 pm
А сегодня день архивного работника. У вас на сайте есть “Архив”? Можете праздновать! :))
LJ-brilliantrosa
March 11th, 2010 at 11:54 pm
У нас в жж за такой пост бы закидали какашками в каментах:)
YMKI
March 14th, 2010 at 4:47 pm
Подскажите, а у вас сквозную ссылку купить можно? Если да, сообщите цену на мыло, пожалуйста?
greethabheamp
March 19th, 2010 at 3:14 am
Я уверен, что это уже обсуждалось, воспользуйтесь поиском по форуму.
quoneeexperse
March 19th, 2010 at 3:58 am
Спасибо за объяснение. Все гениальное просто.
CenianamPioca
March 19th, 2010 at 5:37 am
В этом что-то есть. Буду знать, большое спасибо за помощь в этом вопросе.
Upselpser
March 19th, 2010 at 6:51 am
Браво, ваша мысль пригодится
leasumpigmele
March 19th, 2010 at 8:21 am
Не понятно
teewlytetmurf
March 19th, 2010 at 9:17 am
концовка предсказуема с самого начала