#include <iostream>
using namespace std;
// Funciones de búsqueda
int busquedaLineal(int arr[], int n, int clave) {
for (int i = 0; i < n; i++) {
if (arr[i] == clave) return i;
}
return -1;
}
int busquedaBinaria(int arr[], int inicio, int fin, int clave) {
while (inicio <= fin) {
int medio = inicio + (fin - inicio) / 2;
if (arr[medio] == clave) return medio;
if (arr[medio] < clave) inicio = medio + 1;
else fin = medio - 1;
}
return -1;
}
// Algoritmos de ordenamiento
void burbuja(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]);
}
}
}
}
void seleccion(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int min_idx = i;
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) min_idx = j;
}
swap(arr[i], arr[min_idx]);
}
}
void insercion(int arr[], int n) {
for (int i = 1; i < n; i++) {
int clave = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > clave) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = clave;
}
}
int main() {
int arr[] = {5, 3, 8, 1, 2};
int n = sizeof(arr)/sizeof(arr[0]);
cout << "Ordenando con burbuja..." << endl;
burbuja(arr, n);
for (int num : arr) cout << num << " ";
cout << endl;
int clave = 3;
int resultado = busquedaBinaria(arr, 0, n - 1, clave);
cout << "Elemento encontrado en la posición: " << resultado << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRnVuY2lvbmVzIGRlIGLDunNxdWVkYQppbnQgYnVzcXVlZGFMaW5lYWwoaW50IGFycltdLCBpbnQgbiwgaW50IGNsYXZlKSB7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGlmIChhcnJbaV0gPT0gY2xhdmUpIHJldHVybiBpOwogICAgfQogICAgcmV0dXJuIC0xOwp9CgppbnQgYnVzcXVlZGFCaW5hcmlhKGludCBhcnJbXSwgaW50IGluaWNpbywgaW50IGZpbiwgaW50IGNsYXZlKSB7CiAgICB3aGlsZSAoaW5pY2lvIDw9IGZpbikgewogICAgICAgIGludCBtZWRpbyA9IGluaWNpbyArIChmaW4gLSBpbmljaW8pIC8gMjsKICAgICAgICBpZiAoYXJyW21lZGlvXSA9PSBjbGF2ZSkgcmV0dXJuIG1lZGlvOwogICAgICAgIGlmIChhcnJbbWVkaW9dIDwgY2xhdmUpIGluaWNpbyA9IG1lZGlvICsgMTsKICAgICAgICBlbHNlIGZpbiA9IG1lZGlvIC0gMTsKICAgIH0KICAgIHJldHVybiAtMTsKfQoKLy8gQWxnb3JpdG1vcyBkZSBvcmRlbmFtaWVudG8Kdm9pZCBidXJidWphKGludCBhcnJbXSwgaW50IG4pIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbiAtIDE7IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbiAtIGkgLSAxOyBqKyspIHsKICAgICAgICAgICAgaWYgKGFycltqXSA+IGFycltqICsgMV0pIHsKICAgICAgICAgICAgICAgIHN3YXAoYXJyW2pdLCBhcnJbaiArIDFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKdm9pZCBzZWxlY2Npb24oaW50IGFycltdLCBpbnQgbikgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuIC0gMTsgaSsrKSB7CiAgICAgICAgaW50IG1pbl9pZHggPSBpOwogICAgICAgIGZvciAoaW50IGogPSBpICsgMTsgaiA8IG47IGorKykgewogICAgICAgICAgICBpZiAoYXJyW2pdIDwgYXJyW21pbl9pZHhdKSBtaW5faWR4ID0gajsKICAgICAgICB9CiAgICAgICAgc3dhcChhcnJbaV0sIGFyclttaW5faWR4XSk7CiAgICB9Cn0KCnZvaWQgaW5zZXJjaW9uKGludCBhcnJbXSwgaW50IG4pIHsKICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgaW50IGNsYXZlID0gYXJyW2ldOwogICAgICAgIGludCBqID0gaSAtIDE7CiAgICAgICAgd2hpbGUgKGogPj0gMCAmJiBhcnJbal0gPiBjbGF2ZSkgewogICAgICAgICAgICBhcnJbaiArIDFdID0gYXJyW2pdOwogICAgICAgICAgICBqLS07CiAgICAgICAgfQogICAgICAgIGFycltqICsgMV0gPSBjbGF2ZTsKICAgIH0KfQoKaW50IG1haW4oKSB7CiAgICBpbnQgYXJyW10gPSB7NSwgMywgOCwgMSwgMn07CiAgICBpbnQgbiA9IHNpemVvZihhcnIpL3NpemVvZihhcnJbMF0pOwogICAgCiAgICBjb3V0IDw8ICJPcmRlbmFuZG8gY29uIGJ1cmJ1amEuLi4iIDw8IGVuZGw7CiAgICBidXJidWphKGFyciwgbik7CiAgICBmb3IgKGludCBudW0gOiBhcnIpIGNvdXQgPDwgbnVtIDw8ICIgIjsKICAgIGNvdXQgPDwgZW5kbDsKICAgIAogICAgaW50IGNsYXZlID0gMzsKICAgIGludCByZXN1bHRhZG8gPSBidXNxdWVkYUJpbmFyaWEoYXJyLCAwLCBuIC0gMSwgY2xhdmUpOwogICAgY291dCA8PCAiRWxlbWVudG8gZW5jb250cmFkbyBlbiBsYSBwb3NpY2nDs246ICIgPDwgcmVzdWx0YWRvIDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQ==