█████████ ████ ███░░░░░███ ░░███ ███ ░░░ ██████ ███████ ██████ ██████ ░███ ███░░███ ███░░███ ███░░███ ███░░███ ░███ ░███ ░███░███ ░███ ░███████ ░███ ░███ ░░███ ███░███ ░███░███ ░███ ░███░░░ ░███ ░███ ░░█████████ ░░██████ ░░████████░░██████ ░░██████ ░░░░░░░░░ ░░░░░░ ░░░░░░░░ ░░░░░░ ░░░░░░

Envío 4532

Problema 0xde - Ordenar un arreglo grande

  • Autor: saris123
  • Fecha: 2021-07-12 00:25:36 UTC (Hace casi 3 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.153 s 50 KBi
#2
Correcto
0.153 s 15 KBi
#3
Correcto
0.157 s 14 KBi
#4
Correcto
0.148 s 24 KBi
#5
Correcto
0.159 s 26 KBi
#6
Correcto
0.158 s 15 KBi
#7
Tiempo límite excedido
1.099 s 95 KBi
#8
Tiempo límite excedido
1.142 s 96 KBi
#9
Tiempo límite excedido
1.153 s 100 KBi
#10
Tiempo límite excedido
1.112 s 86 KBi
#11
Tiempo límite excedido
1.028 s 86 KBi
#12
Tiempo límite excedido
1.074 s 93 KBi
#13
Tiempo límite excedido
1.125 s 96 KBi
#14
Tiempo límite excedido
1.021 s 94 KBi
#15
Tiempo límite excedido
1.08 s 57 KBi
#16
Tiempo límite excedido
1.024 s 86 KBi
#17
Tiempo límite excedido
1.147 s 96 KBi
#18
Tiempo límite excedido
1.126 s 96 KBi
#19
Tiempo límite excedido
1.05 s 57 KBi
#20
Tiempo límite excedido
1.032 s 94 KBi
#21
Tiempo límite excedido
1.121 s 93 KBi
#22
Tiempo límite excedido
1.097 s 92 KBi
#23
Tiempo límite excedido
1.087 s 94 KBi
#24
Tiempo límite excedido
1.188 s 93 KBi
#25
Tiempo límite excedido
1.071 s 91 KBi
#26
Tiempo límite excedido
1.096 s 99 KBi
#27
Tiempo límite excedido
1.085 s 90 KBi
Puntos totales: 23 / 100

Código

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc= new Scanner(System.in);
        int N = sc.nextInt();
        int numberArray[] = new int[N];
        for(int i = 0; i < N; i++)
        {
            numberArray[i] = sc.nextInt();
        }
        sc.close();
        
		// MergeSort      
        Main mergeSort = new Main();
        mergeSort.sort(numberArray, 0, numberArray.length - 1);
		
        for(int i = 0; i < numberArray.length; i++) {
            System.out.print(numberArray[i] + " ");
          }
	}

	void sort(int numberArray[], int lowIndex, int highIndex)
    {
        if (lowIndex < highIndex) {
            int middlePoint = lowIndex + (highIndex - lowIndex) / 2;
            sort(numberArray, lowIndex, middlePoint);
            sort(numberArray, middlePoint + 1, highIndex);
            merge(numberArray, lowIndex, middlePoint, highIndex);
        }
    }
	
	void merge(int numberArray[], int lowIndex, int middlePoint, int highIndex)
	    {
	        int size1 = middlePoint - lowIndex + 1;
	        int size2 = highIndex - middlePoint;
	        int L[] = new int[size1];
	        int R[] = new int[size2];
	        for (int i = 0; i < size1; ++i)
	            L[i] = numberArray[lowIndex + i];
	        for (int j = 0; j < size2; ++j)
	            R[j] = numberArray[middlePoint + 1 + j];

	        int i = 0, j = 0;
	        int k = lowIndex;
	        while (i < size1 && j < size2) {
	            if (L[i] <= R[j]) {
	                numberArray[k] = L[i];
	                i++;
	            }
	            else {
	                numberArray[k] = R[j];
	                j++;
	            }
	            k++;
	        }
	 
	        while (i < size1) {
	            numberArray[k] = L[i];
	            i++;
	            k++;
	        }
	 
	        while (j < size2) {
	            numberArray[k] = R[j];
	            j++;
	            k++;
	        }
	    }
}