Python: 插入排序逻辑失败但我不确定为什么
Python: Insertion sort logic is failing but i'm not sure why
我向自己提出了一个挑战,即在不查找代码示例的情况下重新创建一个插入排序,只是从“的伪代码”
pop Number out array,与同索引点的数比较,如果Number小于数组索引点的数,则将数组向下移动-1,当数组索引点的值小于Number时,插入到那时,”
我已经将这件事重写了 4 次,我宁愿有方向而不是仅仅谷歌搜索答案,
我自学编码,我喜欢限制自己,因为我相信这样会更有纪律
他是代码,
它似乎可以在 while 循环的 1 次迭代中工作,但不会更进一步,
array = [3,2,1,0] 得到 [2, 1, 0, 3]
testArray = [3,2,1,0]
index = 0
for n in testArray:
tempIndex = index - 1
if index > 0:
if n < testArray[tempIndex]:
testArray.pop(index)
while True:
if testArray[tempIndex] < n:
tempIndex -= 1
else:
break
testArray.insert(tempIndex,n)
index += 1
编辑:删除调试器以压缩代码
我认为你没有正确回溯,这就是为什么你要面对那种 issue.But 我正确解决 it.See 它。
testArray = [3,2,1,0]
index = 0
for n in testArray:
tempIndex = index - 1
print("index: ",index)
print("tempIndex: ",tempIndex)
if index > 0:
if n < testArray[tempIndex]:
testArray.pop(index)
while True:
print("While loop: ",testArray[tempIndex])
if testArray[tempIndex] < n:
tempIndex -= 1
else:
break
testArray.insert(tempIndex,n)
print("TestArray:-----> ",testArray)
count=tempIndex
print("count: ",count)
while(testArray[count]<testArray[count-1]):
#Swap value till the start of the testArray[0]
temp = testArray[count]
testArray[count]= testArray[count-1]
testArray[count-1] = temp
print("TestArray:---swap-> ",testArray)
if(count != 1):
count = count-1
print("TestArray: ",testArray)
index += 1
大量使用 Print 语句来检查您的逻辑(思维)是否工作正常,代码是否相应工作:
index: 0
tempIndex: -1
index: 1
tempIndex: 0
While loop: 3
TestArray:-----> [2, 3, 1, 0]
count: 0
TestArray: [2, 3, 1, 0]
index: 2
tempIndex: 1
While loop: 3
TestArray:-----> [2, 1, 3, 0]
count: 1
TestArray:---swap-> [1, 2, 3, 0]
TestArray: [1, 2, 3, 0]
index: 3
tempIndex: 2
While loop: 3
TestArray:-----> [1, 2, 0, 3]
count: 2
TestArray:---swap-> [1, 0, 2, 3]
TestArray:---swap-> [0, 1, 2, 3]
TestArray: [0, 1, 2, 3]
我向自己提出了一个挑战,即在不查找代码示例的情况下重新创建一个插入排序,只是从“的伪代码” pop Number out array,与同索引点的数比较,如果Number小于数组索引点的数,则将数组向下移动-1,当数组索引点的值小于Number时,插入到那时,” 我已经将这件事重写了 4 次,我宁愿有方向而不是仅仅谷歌搜索答案,
我自学编码,我喜欢限制自己,因为我相信这样会更有纪律
他是代码, 它似乎可以在 while 循环的 1 次迭代中工作,但不会更进一步,
array = [3,2,1,0] 得到 [2, 1, 0, 3]
testArray = [3,2,1,0]
index = 0
for n in testArray:
tempIndex = index - 1
if index > 0:
if n < testArray[tempIndex]:
testArray.pop(index)
while True:
if testArray[tempIndex] < n:
tempIndex -= 1
else:
break
testArray.insert(tempIndex,n)
index += 1
编辑:删除调试器以压缩代码
我认为你没有正确回溯,这就是为什么你要面对那种 issue.But 我正确解决 it.See 它。
testArray = [3,2,1,0]
index = 0
for n in testArray:
tempIndex = index - 1
print("index: ",index)
print("tempIndex: ",tempIndex)
if index > 0:
if n < testArray[tempIndex]:
testArray.pop(index)
while True:
print("While loop: ",testArray[tempIndex])
if testArray[tempIndex] < n:
tempIndex -= 1
else:
break
testArray.insert(tempIndex,n)
print("TestArray:-----> ",testArray)
count=tempIndex
print("count: ",count)
while(testArray[count]<testArray[count-1]):
#Swap value till the start of the testArray[0]
temp = testArray[count]
testArray[count]= testArray[count-1]
testArray[count-1] = temp
print("TestArray:---swap-> ",testArray)
if(count != 1):
count = count-1
print("TestArray: ",testArray)
index += 1
大量使用 Print 语句来检查您的逻辑(思维)是否工作正常,代码是否相应工作:
index: 0
tempIndex: -1
index: 1
tempIndex: 0
While loop: 3
TestArray:-----> [2, 3, 1, 0]
count: 0
TestArray: [2, 3, 1, 0]
index: 2
tempIndex: 1
While loop: 3
TestArray:-----> [2, 1, 3, 0]
count: 1
TestArray:---swap-> [1, 2, 3, 0]
TestArray: [1, 2, 3, 0]
index: 3
tempIndex: 2
While loop: 3
TestArray:-----> [1, 2, 0, 3]
count: 2
TestArray:---swap-> [1, 0, 2, 3]
TestArray:---swap-> [0, 1, 2, 3]
TestArray: [0, 1, 2, 3]