0
基本上我一直在嘗試的是,我從未排序的列表中選出最小和最大的,然後將它們附加到一個新列表中,然後從舊的未排序列表中彈出最小和最大的列表,直到我結束了一個排序列表。請看看我的代碼。我的排序算法在Python中有時會在運行時凍結,有人可以看看嗎?
import random
import time
stack = [] #sorted list
numbersarray = [] #unsorted list
usersize = int(input("How many digits do you want in your array? ")) #numberofinputs
limit = 0
counter = 0
while limit <= usersize:
numbersarray.append(random.randint(0,20)) #randomly input numbers into array
limit = limit + 1
print(numbersarray) #prints the current unsorted array
start_time = time.time() #starts clock
subtractor = 0 #used later in code for changing index
while len(numbersarray) != 0:
i = 0
largest = numbersarray[i]
size = len(numbersarray) -1
smallest = numbersarray[i]
while (i < len(numbersarray)):
if numbersarray[i] >= largest:
largest = numbersarray[i]
index = i
elif numbersarray[i] <= smallest:
smallest = numbersarray[i]
indextwo = i
i = i+1
if (len(numbersarray) == 1): #this checks if there's only 1 number left.
entry = int(stacksize/2 + 1)
stack.insert(entry,numbersarray[0])
break
else:
if indextwo > index:
numbersarray.pop(indextwo)
numbersarray.pop(index)
elif index > indextwo:
numbersarray.pop(index)
numbersarray.pop(indextwo)
stacksize = len(stack)
if stacksize == 0:
stack.append(smallest)
stack.append(largest)
elif stacksize != 0:
stack.insert(stacksize-subtractor,largest) #the subtractor is dynamically changing the index of insertion.
stack.insert(0+subtractor,smallest)
subtractor = subtractor + 1
print(stack)
print("--- %s seconds ---" % (time.time() - start_time))
我看到發生了什麼,好吧,我一定會考慮一下。我是一名初學者編碼員,所以我只是在教自己排序算法,這就是爲什麼這麼糟糕,謝謝! –