Está en la página 1de 10

INSTITUTO TECNOLÓGICO SUPERIOR

P’URHÉPECHA

DIVISIÓN DE ESTUDIOS PROFESIONALES


DEPARTAMENTO DE INGENIERÍA BIOMÉDICA

“Programación Orientada a objetos”

TEMA 5

“Ejercicios de java”

“Reporte”

Nombre del Alumno:


Ana Paola Cipriano Felipe

Profesor:

Carlos Eduardo Lopez Valencia

CHERÁN, MICHOACÁN FECHA:26/05/2023


n ejemplo en java de ShellSort

package poo;

import java.util.Arrays;

public class ShellSort {

public static void sort(int[] arr) {

int n = arr.length;

// Calcula el intervalo inicial

int intervalo = 1;

while (intervalo < n / 3) {

intervalo = intervalo * 3 + 1;

while (intervalo > 0) {

// Insertion sort con intervalo

for (int i = intervalo; i < n; i++) {

int temp = arr[i];

int j = i;

while (j > intervalo - 1 && arr[j - intervalo] >= temp) {

arr[j] = arr[j - intervalo];

j -= intervalo;

arr[j] = temp;

intervalo = (intervalo - 1) / 3;

public static void main(String[] args) {

int[] arr = { 8, 5, 2, 9, 5, 6, 3 };

System.out.println("Arreglo original: " + Arrays.toString(arr));

ShellSort.sort(arr);
System.out.println("Arreglo ordenado: " + Arrays.toString(arr));

Muestra un ejemplo en java de Búsqueda indexada

package poo;

public class BusquedaIndexada {

public static void buscarMaximo(int[] numeros, int inicio, int fin) {

// Tamaño de bloque

int tamanoBloque = (int) Math.sqrt(numeros.length);

// Crear tabla de índices

int[] indices = new int[numeros.length / tamanoBloque + 1];

for (int i = 0; i < numeros.length; i += tamanoBloque) {

int maximo = numeros[i];

for (int j = i; j < i + tamanoBloque && j < numeros.length; j++) {

if (numeros[j] > maximo) {

maximo = numeros[j];

indices[i / tamanoBloque] = maximo;

// Buscar valor máximo en rango

int maximo = Integer.MIN_VALUE;

for (int i = inicio; i <= fin; ) {

if (i % tamanoBloque == 0 && i + tamanoBloque - 1 <= fin) {

// Si el rango completo está dentro de un bloque, utilizar la tabla de índices

maximo = Math.max(maximo, indices[i / tamanoBloque]);

i += tamanoBloque;

} else {

// Si no, buscar el máximo en el bloque correspondiente


maximo = Math.max(maximo, numeros[i]);

i++;

System.out.println("El valor máximo en el rango [" + inicio + ", " + fin + "] es: " +

maximo);

public static void main(String[] args) {

int[] numeros = {3, 8, 1, 7, 2, 6, 9, 4, 5, 10};

int inicio = 2;

int fin = 7;

buscarMaximo(numeros, inicio, fin);

También podría gustarte