[Tutor] bubble sort function
Spyros Charonis
s.charonis at gmail.com
Sat Nov 15 17:46:26 CET 2014
Dear group,
I'm having a bit of trouble with understanding why my bubble sort
implementation doesn't work. I've got the following function to perform a
bubble sort operation on a list of numbers:
def bubble_sort_ascending(unsorted):
""" Sorts a list of numbers into ascending order """
iterations = 0
size = len(unsorted) - int(1)
for i in range(0, size):
unsorted[i] = float(unsorted[i])
while unsorted[i] > unsorted[i+1]:
# Use a tuple assignment in order to swap the value of
two variables
unsorted[i], unsorted[i+1] = unsorted[i+1], unsorted[i]
iterations += 1
sorted_vec = unsorted[:] # copy unsorted which is now
sorted
print "\nIterations completed: %s\n" %(iterations)
return sorted_vec
Example: mylist = [4, 1, 7, 19, 13, 22, 17, 14, 23, 21]
When I call it as such bubble_sort_ascending(mylist), it returns the list
only partially sorted with 5 iterations reported, i.e.
[1, 4.0, 7.0, 13, 19.0, 17, 14, 22.0, 21, 23.0]
and I have to call it again for the the sorting operation to complete. Is
there something I am missing in my code? Why does it not sort the entire
list at once and just count all completed iterations?
Any help appreciated.
Many thanks,
Spyros
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20141115/24b63ba9/attachment.html>
More information about the Tutor
mailing list