Reputation: 39
I found this code on stack overflow answering a topic I was working on (how to sort a list of integers without using sort and sorted built-in functions):
data_list = [-5, -23, 5, 0, 23, -6, 23, 67]
new_list = []
while data_list:
minimum = data_list[0] # arbitrary number in list
for x in data_list:
if x < minimum:
minimum = x
new_list.append(minimum)
data_list.remove(minimum)
print(new_list)
It works perfectly well. But when I go through it I get confused on how it works.
minimum
is set to the first element in the list, -5
.
When the for
loop kicks in it starts with the first element of the list. x
is thereby equal to -5
, and so x
is not less than minimum
. How can the iteration go on, then?
Upvotes: 1
Views: 65
Reputation: 34
Perhaps some step-by-step visualization will help you. I already put your code inside, however, it's not an optimal way to make a sort implementation. You can check the following algorithms: quicksort, merge sort, bubble sort, etc.
Programiz has a general explanation of different sorting algorithms.
Also there you can find algorithms in general, with their implementation to visualize them in pythontutor step-by-step.
I know it's a lot, but I hope it's gonna help you some how.
Upvotes: 1
Reputation: 427
The code works by finding the minimum of data_list
, removing it from data_list
and appending it to new_list
. So it stores numbers in new_list
from least to greatest.
data_list = [-5, -23, 5, 0, 23, -6, 23, 67]
new_list = []
while data_list:
minimum = data_list[0] # get default number as a placeholder, minimum does not store minimum yet
for x in data_list:
if x < minimum: # if it finds a new minimum
minimum = x # then minimum is set to that
#since it checked all values of data_list, now, minimum is definitely the minimum
new_list.append(minimum) # new_list has the minimum added
data_list.remove(minimum) # the number is now in the correct position, so it can be discarded.
print(new_list)
Upvotes: 1