algorithm - reverse numerical sort for list in python -
i'm trying create python implementations algorithms book i'm going through. though i'm sure python has these functions built in, thought exercise learn language bit.
the algorithm given create insertion sorting loop numerical array. able working fine. tried modify perform reverse sort (largest number lowest number). output there i'm not sure goes wrong.
first, sort increasing numbers:
sort_this = [31,41,59,26,41,58] print sort_this j in range(1,len(sort_this)): key = sort_this[j] = j - 1 while >= 0 , sort_this[i] > key: sort_this[i + 1] = sort_this[i] -= 1 sort_this[i + 1] = key print sort_this now, reverse sort not work:
sort_this = [5,2,4,6,1,3] print sort_this j in range(len(sort_this)-2, 0, -1): key = sort_this[j] = j + 1 while < len(sort_this) , sort_this[i] > key: sort_this[i - 1] = sort_this[i] += 1 print sort_this sort_this[i - 1] = key print sort_this the output above is:
[5, 2, 4, 6, 1, 3] [5, 2, 4, 6, 3, 3] [5, 2, 4, 6, 3, 1] [5, 2, 4, 6, 3, 1] [5, 2, 6, 6, 3, 1] [5, 2, 6, 4, 3, 1] [5, 6, 6, 4, 3, 1] [5, 6, 4, 4, 3, 1] [5, 6, 4, 3, 3, 1] [5, 6, 4, 3, 2, 1] the final array sorted except first 2 numbers. have gone wrong?
range not include end value. when range(len(sort_this)-2, 0, -1), iteration goes len(sort_this)-2 1, never hit first element (at index 0). change range range(len(sort_this)-2, -1, -1)
Comments
Post a Comment