-
Notifications
You must be signed in to change notification settings - Fork 0
/
BinarySeacrh.cs
61 lines (52 loc) · 1.86 KB
/
BinarySeacrh.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
namespace Lab03_Search;
using System;
using System.Diagnostics;
using System.Globalization;
class BinarySearch
{
static void Main1(string[] args)
{
// la hora de inicio de ejecución
DateTime startTime = DateTime.Now;
Console.WriteLine("Hora de inicio de ejecución: {0}", startTime);
int[] A = { -8, 4, 5, 9, 12, 18, 25, 40, 60, 34, 65, 76, 88, 99, 90, 12, 23, 43, -54, 67, 76 };
Console.WriteLine("Arreglo desordenado: ");
for (int i = 0; i < A.Length; i++)
{
Console.WriteLine($" A[[{i}]]={A[i]} , ");
}
Console.WriteLine("\nIngrese un numero a buscar: ");
int valorleido = Convert.ToInt32(Console.ReadLine());
Stopwatch time1 = new Stopwatch();
time1.Start();
int posicionEncontrada = busquedaBinaria(A, A.Length, valorleido);
if (posicionEncontrada != -1)
{
Console.WriteLine($"\nElemento encontrado en posicion en A[{posicionEncontrada}]={A[posicionEncontrada]}");
time1.Stop();
Console.WriteLine($" Tiempo: {time1.Elapsed.TotalMilliseconds}ms");
}
else
{
Console.WriteLine($"Elemento no encontrado");
}
// la hora de fin de ejecución
DateTime endTime = DateTime.Now;
Console.WriteLine("Hora de fin de ejecución: {0}", endTime);
}
static int busquedaBinaria(int[] lista, int n, int clave)
{
int bajo = 0, alto = n - 1, central = -1;
bool encontrado = false;
while ((bajo <= alto) && (!encontrado))
{
central = (bajo + alto) / 2;
if (lista[central] == clave)
encontrado = true;
else if (clave < lista[central])
alto = central - 1;
else bajo = central + 1;
}
return encontrado ? central : -1;
}
}