python-10 选择排序
选择排序
num_list = [
[1, 9, 8, 5, 6, 4],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[9, 8, 7, 6, 5, 4, 3, 2, 1]
]
nums = num_list[1]
length = len(nums)
for i in range(length - 1): # O(n)
maxindex = i
for j in range(i+1, length): # O(n)
if nums[maxindex] < nums[j]:
maxindex = j
# 交换
if i != maxindex:
nums[maxindex], nums[i] = nums[i], nums[maxindex]
print(nums)
二元选择排序
哪里写错了??? #F44336
num_list = [
[1, 9, 8, 5,],
[1, 2, 3, 4, 5, 6, 7, 8, 9],
[9, 8, 7, 6, 5, 4, 3, 2, 1]
]
nums = num_list[0]
length = len(nums)
for i in range(length // 2 ): # O(n)
maxindex = i
minindex = -i-1
minorigin = -i -1
for j in range(i+1, length-i): # O(n)
if nums[maxindex] < nums[j]:
maxindex = j
if nums[minindex] > nums[-j-1]:
minindex = -j-1 # 负索引
# 交换
if i != maxindex:
nums[maxindex], nums[i] = nums[i], nums[maxindex]
if i == minindex or i == length + minindex:
minindex = maxindex - length
if minindex != minorigin:
nums[minindex], nums[minorigin] = nums[minorigin], nums[minindex]
print(nums)