diff --git a/ago-dic-2024/Saul_Rivera/Act4.java b/ago-dic-2024/Saul_Rivera/Act4.java new file mode 100644 index 00000000..a2f02441 --- /dev/null +++ b/ago-dic-2024/Saul_Rivera/Act4.java @@ -0,0 +1,76 @@ +import java.util.Scanner; + +public class Act4 { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + int n = scanner.nextInt(); + scanner.nextLine(); + + String[] words = scanner.nextLine().split(" "); + + mergeSort(words, 0, words.length - 1); + + for (String word : words) { + System.out.print(word + " "); + } + + scanner.close(); + } + + // Método de ordenación Merge Sort + public static void mergeSort(String[] array, int izq, int der) { + if (izq < der) { + int medio = (izq + der) / 2; + + // Divide + mergeSort(array, izq, medio); + mergeSort(array, medio + 1, der); + + // Venceras + merge(array, izq, medio, der); + } + } + + public static void merge(String[] array, int izq, int medio, int der) { + int n1 = medio - izq + 1; + int n2 = der - medio; + + String[] izqArray = new String[n1]; + String[] derArray = new String[n2]; + + //Array Temporal + for (int i = 0; i < n1; i++) { + izqArray[i] = array[izq + i]; + } + for (int j = 0; j < n2; j++) { + derArray[j] = array[medio + 1 + j]; + } + + int i = 0, j = 0; + int k = izq; + while (i < n1 && j < n2) { + if (izqArray[i].compareTo(derArray[j]) <= 0) { + array[k] = izqArray[i]; + i++; + } else { + array[k] = derArray[j]; + j++; + } + k++; + } + + while (i < n1) { + array[k] = izqArray[i]; + i++; + k++; + } + + while (j < n2) { + array[k] = derArray[j]; + j++; + k++; + } + } +} + diff --git a/ago-dic-2024/Saul_Rivera/Act5.java b/ago-dic-2024/Saul_Rivera/Act5.java new file mode 100644 index 00000000..8c5097ca --- /dev/null +++ b/ago-dic-2024/Saul_Rivera/Act5.java @@ -0,0 +1,68 @@ +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +class Libro { + String nombre; + int paginas; + + public Libro(String nombre, int paginas) { + this.nombre = nombre; + this.paginas = paginas; + } +} + +public class Act5 { + + public static void mergeSort(List libros, int inicio, int fin) { + if (inicio < fin) { + int medio = (inicio + fin) / 2; + mergeSort(libros, inicio, medio); + mergeSort(libros, medio + 1, fin); + merge(libros, inicio, medio, fin); + } + } + + public static void merge(List libros, int inicio, int medio, int fin) { + List izquierda = new ArrayList<>(libros.subList(inicio, medio + 1)); + List derecha = new ArrayList<>(libros.subList(medio + 1, fin + 1)); + + int i = 0, j = 0, k = inicio; + + while (i < izquierda.size() && j < derecha.size()) { + if (izquierda.get(i).paginas <= derecha.get(j).paginas) { + libros.set(k++, izquierda.get(i++)); + } else { + libros.set(k++, derecha.get(j++)); + } + } + + while (i < izquierda.size()) { + libros.set(k++, izquierda.get(i++)); + } + + while (j < derecha.size()) { + libros.set(k++, derecha.get(j++)); + } + } + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + int n = Integer.parseInt(scanner.nextLine()); + + List libros = new ArrayList<>(); + + for (int i = 0; i < n; i++) { + String[] entrada = scanner.nextLine().split(" "); + String nombre = entrada[0]; + int paginas = Integer.parseInt(entrada[1]); + libros.add(new Libro(nombre, paginas)); + } + + mergeSort(libros, 0, libros.size() - 1); + + for (Libro libro : libros) { + System.out.print(libro.nombre + " "); + } + } +} diff --git a/ago-dic-2024/Saul_Rivera/Act6.java b/ago-dic-2024/Saul_Rivera/Act6.java new file mode 100644 index 00000000..4ed6680b --- /dev/null +++ b/ago-dic-2024/Saul_Rivera/Act6.java @@ -0,0 +1,50 @@ +import java.util.Scanner; + +public class Act6 { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + int n = scanner.nextInt(); + int[] ColorId = new int[n]; + + for (int i = 0; i < n; i++) { + ColorId[i] = scanner.nextInt(); + } + + quickSort(ColorId, 0, n - 1); + + for (int i = 0; i < n; i++) { + System.out.print(ColorId[i] + (i < n - 1 ? " " : "\n")); + } + scanner.close(); + } + + // Algoritmo Quick Sort + private static void quickSort(int[] arr, int low, int high) { + if (low < high) { + int pivotIndex = particion(arr, low, high); + quickSort(arr, low, pivotIndex - 1); + quickSort(arr, pivotIndex + 1, high); + } + } + + // Pivote + private static int particion(int[] arr, int low, int high) { + int pivot = arr[high]; + int i = low - 1; + for (int j = low; j < high; j++) { + if (arr[j] < pivot) { + i++; + Intercambio(arr, i, j); + } + } + Intercambio(arr, i + 1, high); + return i + 1; + } + + private static void Intercambio(int[] arr, int i, int j) { + int temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } +} diff --git a/ago-dic-2024/Saul_Rivera/Practica_1.java b/ago-dic-2024/Saul_Rivera/Practica_1.java new file mode 100644 index 00000000..2d01bc91 --- /dev/null +++ b/ago-dic-2024/Saul_Rivera/Practica_1.java @@ -0,0 +1,15 @@ +import java.util.Scanner; + +public class Practica_1 { + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + System.out.println("Ingrese ambos valores: "); + int a = sc.nextInt(); + int b = sc.nextInt(); + + int c = a + b; + + System.out.println("Resultado: " + c); + } +} \ No newline at end of file diff --git a/ago-dic-2024/Saul_Rivera/Practica_2.java b/ago-dic-2024/Saul_Rivera/Practica_2.java new file mode 100644 index 00000000..02a8b2ab --- /dev/null +++ b/ago-dic-2024/Saul_Rivera/Practica_2.java @@ -0,0 +1,50 @@ +import java.util.*; + + public class Practica_2 { + public static void main(String[] args) { + + Scanner sc = new Scanner(System.in); + + System.out.print("Por favor, ingrese la cantidad de problemas que David quiere resolver: "); + int acts = sc.nextInt(); + int[] arr = new int[acts]; + + System.out.print("Ahora ingrese los minutos totales que David tiene disponibles: "); + int mins = sc.nextInt(); + + System.out.println("Ingrese los minutos que toma resolver cada uno de los " + acts + " problemas:"); + for (int i = 0; i < arr.length; i++) { + System.out.print("Problema " + (i + 1) + ": "); + arr[i] = sc.nextInt(); + } + + // Ordenar los tiempos de menor a mayor usando el método de inserción + for (int i = 1; i < arr.length; i++) { + int auxiliar = arr[i]; + int j; + for (j = i - 1; j >= 0 && arr[j] > auxiliar; j--) { + arr[j + 1] = arr[j]; + } + arr[j + 1] = auxiliar; + } + + int suma = 0; + int problemas_resueltos = 0; + for (int i = 0; i < arr.length; i++) { + if (suma + arr[i] <= mins) { + suma += arr[i]; + problemas_resueltos++; + } else { + break; + } + } + + System.out.println("\nDavid ha podido resolver " + problemas_resueltos + " problemas."); + + System.out.println("Tiempo total disponible: " + mins + " minutos."); + + System.out.println("Tiempo utilizado: " + suma + " minutos."); + + System.out.println("¡Gracias por usar nuestro programa!"); + } + } \ No newline at end of file diff --git a/ago-dic-2024/Saul_Rivera/Primer_Parcial.java b/ago-dic-2024/Saul_Rivera/Primer_Parcial.java new file mode 100644 index 00000000..b44626c1 --- /dev/null +++ b/ago-dic-2024/Saul_Rivera/Primer_Parcial.java @@ -0,0 +1,42 @@ +import java.util.*; + +public class Primer_Parcial { + + public static void main(final String[] args) { + + final Scanner scanner = new Scanner(System.in); + + System.out.println("Programa de ordenamiento de Medicinas"); + System.out.println("Sigue las instrucciones para ingresar los medicamentos correctamente.\n"); + + System.out.print("Introduce el número de Medicamentos: "); + final int n = scanner.nextInt(); + + final String medicamento[]=new String[n]; + + System.out.print("Introduce el nombre de Medicamentos: "); + for(int i = 0; i > n; i++) { + medicamento[i]=scanner.nextLine(); + } + scanner.close(); + + // Algoritmo de ordenamiento por burbuja + for (int i = 0; i < n - 1; i++) { + for (int j = 0; j < n - i - 1; j++) + { + if (medicamento[j] < medicamento[j + 1]) { + final String temp = medicamento[j]; + medicamento[j] = medicamento[j + 1]; + medicamento[j + 1] = temp; + } + } + } + + System.out.println("\nLos Pokémon capturados ordenados de mayor a menor poder son:"); + for (int i = 0; i < n; i++) { + System.out.print(medicamento[i] + " "); + } + + System.out.println("\n\n¡Gracias por usar el programa de ordenamiento de Pokémon!"); + } + } \ No newline at end of file diff --git a/ago-dic-2024/Saul_Rivera/Primer_Parcial2.java b/ago-dic-2024/Saul_Rivera/Primer_Parcial2.java new file mode 100644 index 00000000..f8f8f5b5 --- /dev/null +++ b/ago-dic-2024/Saul_Rivera/Primer_Parcial2.java @@ -0,0 +1,42 @@ +import java.util.Scanner; + +public class Primer_Parcial2 { + public static void main(String[] args) { + + Scanner scanner = new Scanner(System.in); + + System.out.println("Programa de ordenamiento de Medicamento"); + System.out.println("Por favor, sigue las instrucciones para ingresar los datos correctamente.\n"); + + System.out.print("Introduce el número de Medicamentos sobrantes: "); + int n = scanner.nextInt(); + + // Arreglo para las pastillas sobrantes del Medicamento + int[] medicamento = new int[n]; + + System.out.println("Introduce las pastillas de cada Medicamento separados por un espacio:"); + for (int i = 0; i < n; i++) { + medicamento[i] = scanner.nextInt(); + } + + scanner.close(); + + for (int i = 0; i < n - 1; i++) { + for (int j = 0; j < n - i - 1; j++) { + if (medicamento[j] < medicamento[j + 1]) { + // mayor a menor + int temp = medicamento[j]; + medicamento[j] = medicamento[j + 1]; + medicamento[j + 1] = temp; + } + } + } + + System.out.println("\nLos Medicamentos ordenados de mayor a menor son:"); + for (int i = 0; i < n; i++) { + System.out.print(medicamento[i] + " "); + } + } + } + + diff --git a/ago-dic-2024/Saul_Rivera/Problema1.java b/ago-dic-2024/Saul_Rivera/Problema1.java new file mode 100644 index 00000000..9a62044b --- /dev/null +++ b/ago-dic-2024/Saul_Rivera/Problema1.java @@ -0,0 +1,79 @@ +package Examen2Parcial; +import java.util.*; + + class Plumon { + String color; + int diluido; + + public Plumon(String color, int dilucion) { + this.color = color; + this.diluido = dilucion; + } + + public String toString() { + return color + "-" + diluido; + } + } + + public class Problema1 { + private static Map COLOR_ORDEN = Map.of( + "Rojo", 0, + "Anaranjado", 1, + "Amarillo", 2, + "Verde", 3, + "Indigo", 4, + "Violeta", 5, + "Azul", 6 + ); + private static int compare(Plumon p1, Plumon p2) { + int Comparacion = Integer.compare(COLOR_ORDEN.get(p1.color), COLOR_ORDEN.get(p2.color)); + + if (Comparacion == 0) { + return Integer.compare(p1.diluido, p2.diluido); + } + + return Comparacion; + } + + private static void quickSort(List plumones, int tonoBajo, int tonoAlto) { + if (tonoBajo < tonoAlto) { + int pi = particion(plumones, tonoBajo, tonoAlto); + quickSort(plumones, tonoBajo, pi - 1); + quickSort(plumones, pi + 1, tonoAlto); + } + } + + private static int particion(List plumones, int tonoBajo, int tonoAlto) { + Plumon pivote = plumones.get(tonoAlto); + int i = (tonoBajo - 1); + for (int j = tonoBajo; j < tonoAlto; j++) { + if (compare(plumones.get(j), pivote) <= 0) { + i++; + Collections.swap(plumones, i, j); + } + } + Collections.swap(plumones, i + 1, tonoAlto); + return i + 1; + } + + public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + + int n = sc.nextInt(); + sc.nextLine(); + + List plumones = new ArrayList<>(); + + for (int i = 0; i < n; i++) { + String input = sc.nextLine(); + String[] parts = input.split("-"); + String color = parts[0]; + int dilucion = Integer.parseInt(parts[1]); + plumones.add(new Plumon(color, dilucion)); + } + + quickSort(plumones, 0, plumones.size() - 1); + for (Plumon p : plumones) + System.out.println(p); + } + } \ No newline at end of file diff --git a/ago-dic-2024/Saul_Rivera/Problema2.java b/ago-dic-2024/Saul_Rivera/Problema2.java new file mode 100644 index 00000000..b7c167db --- /dev/null +++ b/ago-dic-2024/Saul_Rivera/Problema2.java @@ -0,0 +1,32 @@ +package Examen2Parcial; +import java.util.*; + +public class Problema2 { + + public static void main(String[] args) { + Scanner sc =new Scanner (System.in); + + int n = sc.nextInt(); + int [] arr = new int [n]; + + for (int i= 0; i < n; i++){ + arr[i] = sc.nextInt(); + } + + int max = Arrays.stream(arr).max().getAsInt(); + + int[] freq = new int [max + 1]; + + for (int i = 0; i < n; i ++){ + freq[arr[i]]++; + } + + for (int i = 0; i <= max; i++) { + for (int j = 0; j < freq[i]; j++) { + System.out.print(i + " "); + } + } + } + } + +//https://asimov.cloud/blog/programacion-5/que-es-el-algoritmo-de-counting-sort-274 \ No newline at end of file