Búsqueda y Ordenamiento
unknown
c_cpp
a month ago
2.4 kB
20
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; }
Editor is loading...
Leave a Comment