Pro2324 Help

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