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

Envío 3623

Problema 0xde - Ordenar un arreglo grande

  • Autor: jocarmp08
  • Fecha: 2021-04-04 04:09:19 UTC (Hace casi 4 años)
Caso # Resultado Tiempo Memoria
#1
Correcto
0.035 s 9 KBi
#2
Correcto
0.027 s 3 KBi
#3
Correcto
0.019 s 3 KBi
#4
Correcto
0.038 s 5 KBi
#5
Correcto
0.031 s 3 KBi
#6
Correcto
0.038 s 5 KBi
#7
Tiempo límite excedido
1.098 s 12 KBi
#8
Tiempo límite excedido
1.076 s 7 KBi
#9
Tiempo límite excedido
1.068 s 5 KBi
#10
Tiempo límite excedido
1.015 s 9 KBi
#11
Tiempo límite excedido
1.03 s 14 KBi
#12
Tiempo límite excedido
1.028 s 16 KBi
#13
Tiempo límite excedido
1.085 s 14 KBi
#14
Tiempo límite excedido
1.063 s 15 KBi
#15
Tiempo límite excedido
1.071 s 14 KBi
#16
Tiempo límite excedido
1.024 s 16 KBi
#17
Tiempo límite excedido
1.102 s 16 KBi
#18
Tiempo límite excedido
1.046 s 15 KBi
#19
Tiempo límite excedido
1.041 s 14 KBi
#20
Tiempo límite excedido
1.062 s 5 KBi
#21
Tiempo límite excedido
1.057 s 14 KBi
#22
Tiempo límite excedido
1.046 s 15 KBi
#23
Tiempo límite excedido
1.038 s 14 KBi
#24
Tiempo límite excedido
1.052 s 15 KBi
#25
Tiempo límite excedido
1.085 s 16 KBi
#26
Tiempo límite excedido
1.044 s 15 KBi
#27
Tiempo límite excedido
1.099 s 16 KBi
Puntos totales: 23 / 100

Código

import random


def exchange(array, i, j):
    array[i], array[j] = array[j], array[i]


def insertion_sort(array):
    for i in range(len(array)):
        j = i
        while j > 0 and array[j] < array[j-1]:
            array[j], array[j - 1] = array[j - 1], array[j]
            j -= 1


def hoare_partition(array, lo, hi):
    i = lo
    j = hi + 1
    pivot = array[lo]

    while True:
        i += 1
        while array[i] < pivot:
            i += 1
            if i == hi:
                break

        j -= 1
        while array[j] > pivot:
            j -= 1
            if j == lo:
                break

        if i >= j:
            break

        exchange(array, j, i)

    exchange(array, lo, j)
    return j


def sort(array, lo, hi):
    if hi <= lo:
        return
    if hi - lo <= 7:
        insertion_sort(array)
    else:
        j = hoare_partition(array, lo, hi)
        sort(array, lo, j - 1)
        sort(array, j + 1, hi)


n = int(input())
array = [int(x) for x in input().split()]
random.shuffle(array)  # To avoid worst case scenario
sort(array, 0, n - 1)
print(*array)