import random
import numpy as np
"""
def bogoSort(array):
n = len(array)
t = 0
ordenado = False
while not(ordenado):
ordenado = True
for ini in range(1, n):
if array[ini] < array[ini-1]:
ordenado = False
break
if not(ordenado):
t += 1
newOrder = random.sample(range(0, n), n)
tempA = array.copy()
for ini in range(0, n):
tempA[ini] = array[newOrder[ini]]
array = tempA
print(t)
return array
"""
import threading
def bogoSort(array):
n = len(array)
t = 0
ordenado = False
lock = threading.Lock() # Create a lock for thread synchronization
def swap_order(new_order, temp_a, ini):
with lock:
temp_a[ini] = array[new_order[ini]]
while not ordenado:
ordenado = True
for ini in range(1, n):
if array[ini] < array[ini - 1]:
ordenado = False
break
if not ordenado:
t += 1
new_order = random.sample(range(0, n), n)
temp_a = array.copy()
threads = []
for ini in range(0, n):
thread = threading.Thread(target=swap_order, args=(new_order, temp_a, ini))
threads.append(thread)
thread.start()
for thread in threads:
thread.join()
array = temp_a
print("There was",t,"swaps.")
return array
# a = [4,2,3,4,1]
a = random.sample(range(0,7), 7)
print(a)
a = bogoSort(a)
print(a)