Búsqueda y Ordenamiento

 avatar
user_3711028
c_cpp
5 days ago
2.4 kB
4
Indexable
#include <iostream>
using namespace std;
int busquedaLineal(int [], int, int);
int busquedaBinaria(int [], int, int);
int ordenBurbuja(int [], int);
int main() {
	const int NUMEL = 10;
	int nums[NUMEL] = {22,5,67,98,45,32,101,99,73,10};
	int elemento, ubicacion, movimientos;
	movimientos = ordenBurbuja(nums, NUMEL);
	cout << "La lista ordenada, en orden ascendente, es: " << endl;
	for (int i = 0; i < NUMEL; ++i)
		cout << " " <<nums[i]; // 5 10 22 32 45 67 73 98 99 101
	cout << endl << "Se hicieron " << movimientos
	     << " movimientos para ordenar esta lista" << endl;
	cout << "Introduzca el elemento que esta buscando: ";
	cin >> elemento;
	ubicacion = busquedaLineal(nums, NUMEL, elemento);
	if (ubicacion > -1)
		cout << "El elemento fue encontrado en la posicion con indice "
		     << ubicacion << endl;
	else
		cout << "El elemento no se encontro en la lista" << endl;
	ubicacion = busquedaBinaria(nums, NUMEL, elemento);
	if (ubicacion > -1)
		cout << "El elemento fue encontrado en la posicion con indice "
		     << ubicacion << endl;
	else
		cout << "El elemento no se encontro en la lista" << endl;
	return 0;
}
// esta funcion devuelve la ubicacion de clave en la lista
// se devuelve un -1 si no se encuentra el valor
int busquedaLineal(int lista[], int tamanio, int clave) {
	for (int i = 0; i < tamanio; i++) {
		if (lista[i] == clave)
			return i;
	}
	return -1;
}
// esta funcionn devuelve la ubicacionn de clave en la lista
// se devuelve un -1 si no se encuentra el valor
int busquedaBinaria(int lista[], int tamanio, int clave) {
	int izquierdo = 0, derecho, puntomedio;
	derecho = tamanio -1;
	while (izquierdo <= derecho) {
		puntomedio = (int) ((izquierdo + derecho) / 2);
		if (clave == lista[puntomedio])
			return puntomedio;
		else if (clave > lista[puntomedio])
			izquierdo = puntomedio + 1;
		else
			derecho = puntomedio - 1;
	}
	return -1;
}
// esta funcion organiza de menor a mayor la lista
// devuelve la cantidad de cambios realizados para ordenar.
int ordenBurbuja(int num[], int numel) {
	int temp, movimientos = 0;
	for (int i = 0; i < (numel - 1); i++) {
		for(int j = 1; j < numel; j++) {
			if (num[j] < num[j-1]) {
				temp = num[j];
				num[j] = num[j-1];
				num[j-1] = temp;
				movimientos++;
			}
		}
	}
	return movimientos;
}
Leave a Comment