top of page
consola de programación
image.png

CONTENIDO:

Búsqueda y ordenamiento

image.png
Teclado portátil

#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++;

    }

}

bottom of page