作者:我就唔分_753 | 来源:互联网 | 2023-05-17 20:54
while 版本
# while版本
origin = [9, 10, 2, 8, 5, 6, 1]
nums = [0] + origin
length = len(nums)
for i in range(2,length):
nums[0] = nums[i]
j = i - 1
while nums[j] > nums[0]:
nums[j + 1] = nums[j]
j -= 1
else:
if j + 1 != i:
nums[j + 1] = nums[0]
print(nums)
for版本
# for版本
origin = [9, 10, 2, 8, 5, 6, 1]
nums = [0] + origin
length = len(nums)
for i in range(2,length):
nums[0] = nums[i]
for j in range(i-1, 0, -1):
if nums[0] >= nums[j]:
nums[j + 1] = nums[0]
break
else:
nums[j + 1] = nums[j]
else:
nums[j] = nums[0]
print(nums)
倒序
# 倒序
origin = [9, 10, 2, 8, 5, 6, 1]
nums = [0] + origin
length = len(nums)
for i in range(2,length):
nums[0] = nums[i]
for j in range(i-1, 0, -1):
if nums[0] <= nums[j]:
nums[j + 1] = nums[0]
break
else:
nums[j + 1] = nums[j]
else:
nums[j] = nums[0]
print(nums)
二分树查找版
# 使用二分树查找,则算法不一定稳定
origin = [1, 0, 9, 10, 2, 8, 5, 6]
nums = [0] + origin
length = len(nums)
for i in range(2,length):
nums[0] = nums[i]
minindex = 1
maxindex = i
while minindex = nums[0]:
if nums[index - 1] <= nums[0]:
target = index
break
maxindex = index
else:
if nums[index + 1] >= nums[0]:
target = index + 1
break
minindex = index
else:
target = maxindex
if target == i: continue
nums[target+1:i+1] = nums[target:i]
nums[target] = nums[0]
print(nums)