

CONTENIDO:
Búsqueda y ordenamiento


#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
void Busqueda();
void Burbuja();
void Insercion();
void MergeSort(int arr[], int l, int r);
void merge(int arr[], int l, int m, int r);
int main()
{
int opcion;
srand(time(0));
do
{
cout << " M E N U P R I N C I P A L \n "<< endl;
cout << " ----------------------------"<< endl;
cout << " 1.- BUSQUEDA SECUENCIAL \n "<< endl;
cout << " 2.- ORDENAMIENTO DE BURBUJA \n "<< endl;
cout << " 3.- ORDENAMIENTO POR INSERCION \n "<< endl;
cout << " 4.- ORDENAMIENTO POR MEZCLA \n "<< endl;
cout << " 5.- SALIR \n "<< endl;
cout << "\n INGRESE UNA OPCION: ";
cin >> opcion;
cout << " ----------------------------"<< endl;
switch (opcion)
{
case 1:
cout << " 1.- BUSQUEDA SECUENCIAL "<< endl;
cout << " ----------------------------"<< endl;
Busqueda();
cout << " "<< endl;
break;
case 2:
cout << " 2.- ORDENAMIENTO DE BURBUJA "<< endl;
cout << " ----------------------------"<< endl;
Burbuja();
cout << " "<< endl;
break;
case 3:
cout << " 3.- ORDENAMIENTO POR INSERCION "<< endl;
cout << " ----------------------------"<< endl;
Insercion();
cout << " "<< endl;
break;
case 4:
cout << " 4.- ORDENAMIENTO POR MEZCLA "<< endl;
cout << " ----------------------------"<< endl;
int arr_size;
int numeros[] = {3,4,2,1,5};
arr_size = sizeof(numeros) / sizeof(numeros[0]);
MergeSort(numeros, 0, arr_size - 1);
cout << "Numeros ordenados por mezcla: ";
for(int i = 0; i < arr_size; i++)
cout << numeros[i] << " ";
cout << endl;
cout << " "<< endl;
break;
case 5:
cout << "Saliendo del programa...\n";
break;
default:
cout << "Opción inválida. Por favor, ingrese una opción válida.\n";
break;
}
} while (opcion != 5);
return 0;
}
void Busqueda()
{
const int tam = 20;
int A[tam];
int n, c = 0;
for (int i = 0; i < tam; i++)
{
A[i] = rand() % 20;
cout << "A[" << i << "]=" << A[i] << " ";
}
cout << "\nIngrese el elemento a buscar: ";
cin >> n;
cout << "Cuenta las veces que se encuentra el elemento:\n";
for (int i = 0; i < tam; i++)
{
if (A[i] == n)
{
cout << "A[" << i << "]=" << A[i] << endl;
c++;
}
}
cout << "\nSe repitió: " << c << " veces " << n << endl;
}
void Burbuja()
{
const int tam = 20;
int A[tam];
for (int i = 0; i < tam; i++)
{
A[i] = rand() % 20;
cout << "A[" << i << "]=" << A[i] << " ";
}
cout << "\nOrdenando el vector A[" << tam << "]:\n";
for (int i = 0; i < tam; i++)
{
for (int j = 0; j < tam - 1; j++)
{
if (A[j] > A[j + 1])
{
int temp = A[j];
A[j] = A[j + 1];
A[j + 1] = temp;
}
}
}
for (int i = 0; i < tam; i++)
{
cout << "A[" << i << "]=" << A[i] << " ";
}
cout << endl;
}
void Insercion()
{
const int tam = 5;
int numeros[tam] = {3,4,2,1,5};
cout << "Orden Ascendente: ";
for(int i = 0; i < tam; i++) {
int pos = i;
int aux = numeros[i];
while((pos > 0) && (numeros[pos - 1] > aux)) {
numeros[pos] = numeros[pos - 1];
pos--;
}
numeros[pos] = aux;
}
for(int i = 0; i < tam; i++) {
cout << numeros[i] << " ";
}
cout << "\nOrden Descendente: ";
for(int i = tam - 1; i >= 0; i--) {
cout << numeros[i] << " ";
}
cout << endl;
}
void MergeSort(int arr[], int l, int r) {
if (l < r) {
int m = l + (r - l) / 2;
MergeSort(arr, l, m);
MergeSort(arr, m + 1, r);
merge(arr, l, m, r);
}
}
void merge(int arr[], int l, int m, int r) {
int i, j, k;
int n1 = m - l + 1;
int n2 = r - m;
int L[n1], R[n2];
for (i = 0; i < n1; i++)
L[i] = arr[l + i];
for (j = 0; j < n2; j++)
R[j] = arr[m + 1 + j];
i = 0;
j = 0;
k = l;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
k++;
}
while (i < n1) {
arr[k] = L[i];
i++;
k++;
}
while (j < n2) {
arr[k] = R[j];
j++;
k++;
}
}