AlgoSearch

Velocidad
Estado
Pseudocódigo
Funcion entero binarySearch(entero arr[],entero dato) 

	D.V. 
	Definir menor como entero 
	Definir mayor como entero 
	Definir centro como entero 

	Inicio
	menor <- 0 
	mayor <- tamaño(arr) - 1 
	Mientras (menor <= mayor)
		centro <- (menor + mayor)/2 
	FinMientras
	Si (arr[centro] == dato) entonces
		Devolver centro
	SiNo 
		Si(arr[centro] < dato) entonces 
			menor <- centro + 1 
		SiNo 
			mayor <- centro - 1 
		FinSi 
	FinSi

	Devolver -1
FinFuncion
							
Estado
Pseudocódigo
Funcion entero linearSearch(entero arr[],entero dato) 
	
	D.V. 
	Definir i como entero

	Inicio 
	i <- 0 
	Mientras (i < tamaño(arr) y arr[i] !=dato)
		i <- i+1
	FinMientras

	Si (i >= tamaño(arr)) entonces
		Devolver -1
	FinSi

	Devolver i
FinFuncion
							
Estado
Leyenda:
pivotLoc
Pivote
Buscando
Pseudocódigo
Funcion entero quickSelect(entero arr[],entero izquierda,entero derecha, entero k) 

	D.V. 
	Definir part como entero

	Inicio 
	part <- particion(arr,izquierda,derecha) 

	Si (part == k) entonces 
		Devolver arr[part] 
	SiNo 
	Si (particion < k) entonces
		Devolver quickSelect(arr,part + 1,derecha,k) 
	FinSi
	SiNo 
		Devolver quickSelect(arr, izquierda,part - 1,k) 
	FinSi 
FinFuncion

Funcion entero particion(entero arr[],entero izquierda,entero derecha)

	D.V. 
	Definir i como entero 
	Definir pivote como entero 
	Definir pivoteLoc como entero 
	Definir aux como entero 
	Definir aux2 como entero 

	Inicio 
	pivote <- arr[derecha] 
	pivoteLoc <- izquierda 

	Para i de izquierda hasta derecha con paso 1 
		Si (arr[i] <= pivote) entonces 
			aux <- arr[i] 
			arr[i] <- arr[pivoteLoc] 
			arr[pivoteLoc] <- aux 
			pivoteLoc <- pivoteLoc + 1 
		FinSi 
	FinPara 

	aux2 <- arr[derecha] 
	arr[derecha] <- arr[pivoteLoc] 
	arr[pivoteLoc] <- aux2

	Devolver pivoteLoc 
FinFuncion