Algoritmos
BubbleSort
Descripción
// SPDX-FileCopyrightText: 2023 Pablo Portas López <pablo.portas@udc.es>
//
// SPDX-License-Identifier: GPL-3.0-only
#include <stdio.h>
#define N 15 /* Tamaño */
int main() {
int A[N] = {1,3,2,4,5,6,7,6,4,3,9,9,8,7,10 };
for(int i = 0; i < N; i++) printf(" %d ",A[i]);
int i, j, aux=0;
for (i = 1; i < N; i++) {
for (j = 0; j < N-1; j++) {
if (A[j] > A[j+1]) {
aux = A[j];
A[j] = A[j+1];
A[j+1] = aux;
}
}
}
printf("\n");
for(int i = 0; i < N; i++) printf(" %d ",A[i]);
}
Búsqueda Binaria
Descripción
// SPDX-FileCopyrightText: 2023 Pablo Portas López <pablo.portas@udc.es>
//
// SPDX-License-Identifier: GPL-3.0-only
#include <stdio.h>
#define N 20
int main() {
int A[20] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
int izq, der, mit, buscado;
printf("Introduzca el dato a buscar: ");
scanf("%d", &buscado);
izq = 0;
der = N - 1;
mit = (izq + der) / 2;
while (izq <= der && buscado != A[mit]) {
if (A[mit] < buscado) izq = mit + 1;
else der = mit - 1;
mit = (izq + der) / 2;
}
if (izq <= der)
printf("'%d' está en la posición: %d\n", buscado, mit + 1);
else
printf("'%d' no está en el array\n", buscado);
return 0;
}
Búsqueda Secuencial
Descripción
// SPDX-FileCopyrightText: 2023 Pablo Portas López <pablo.portas@udc.es>
//
// SPDX-License-Identifier: GPL-3.0-only
#include <stdio.h>
#define N 20
int main() {
int A[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
int buscado, indice = 0;
printf("Introduzca el dato a buscar: ");
scanf("%d", &buscado);
while (buscado != A[indice] && indice < N) indice++;
if (indice <= N - 1)
printf("'%d' está en la posición: %d\n", buscado, indice + 1);
else
printf("'%d' no está en el array\n", buscado);
return 0;
}
Búsqueda Secuencial Centinela
Descripción
// SPDX-FileCopyrightText: 2023 Pablo Portas López <pablo.portas@udc.es>
//
// SPDX-License-Identifier: GPL-3.0-only
#include <stdio.h>
#define N 21 /* 1 más que el tamaño del array */
int main() {
int A[N] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
int buscado, indice = 0;
printf("Introduzca el dato a buscar: ");
scanf("%d", &buscado);
A[N - 1] = buscado; /* Inserción del centinela */
while (buscado != A[indice]) indice++;
if (indice < N - 1)
printf("'%d' está en la posición: %d\n", buscado, indice + 1);
else
printf("'%d' no está en el array\n", buscado);
return 0;
}
QuickSort
Descripción
// SPDX-FileCopyrightText: 2023 Pablo Portas López <pablo.portas@udc.es>
//
// SPDX-License-Identifier: GPL-3.0-only
#include <stdio.h>
void intercambiar(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int particion(int arr[], int bajo, int alto) {
int pivote = arr[alto];
int i = (bajo - 1);
for (int j = bajo; j <= alto - 1; j++) {
if (arr[j] < pivote) {
i++;
intercambiar(&arr[i], &arr[j]);
}
}
intercambiar(&arr[i + 1], &arr[alto]);
return (i + 1);
}
void quickSort(int arr[], int bajo, int alto) {
if (bajo < alto) {
int pi = particion(arr, bajo, alto);
quickSort(arr, bajo, pi - 1);
quickSort(arr, pi + 1, alto);
}
}
void imprimirArray(int arr[], int tamano) {
for (int i = 0; i < tamano; i++)
printf("%d ", arr[i]);
printf("\n");
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr) / sizeof(arr[0]);
printf("Array original:\n");
imprimirArray(arr, n);
quickSort(arr, 0, n - 1);
printf("Array ordenado:\n");
imprimirArray(arr, n);
return 0;
}
Last modified: 16 marzo 2025