【发布时间】:2019-11-30 16:51:16
【问题描述】:
我在 python 中遇到了以下用于插入排序的代码。这按预期工作。但是,当我试图跟踪程序时,我被卡住了
def insertionSort(array):
for step in range(1, len(array)):
key = array[step]
j = step - 1
while j >= 0 and key < array[j]:
# For descending order, change key<array[j] to key>array[j].
array[j + 1] = array[j]
j = j - 1
array[j + 1] = key
data = [4, 9, 2, 1, 3]
insertionSort(data)
print('Sorted Array in Ascending Order:')
print(data)
在下面的sn-p中跟踪数组数据。
**1st iteration of for loop**
key = array[1] = 9
j = 1 - 1 = 0
array[j] = array[0] = 4
While 0>=0 and 9 < 4: - condition not satisfied
Now, array[j+1] = key, which means array[1] = 9
数组没有变化
**2nd iteration of for loop**
key = array[2] = 2
j = 2 - 1 = 1
array[j] = array[1] = 9
while 1>=0 and 2 < 9: - condition satisfied
array[j + 1] = array[j]
array[1 + 1] = array [1]
array[2] = array [1]
This means array[2] value becomes 9 now.
Further, j = j -1, which means j = 0 now
Now, array[j + 1] = key
which means array[0 +1] = 2, so array[1]=2.
所以,到目前为止,数组的顺序是这样的,[4,2,9,1,3]
这样下去,最后怎么排序?
【问题讨论】:
标签: python sorting arrays python-3.x