python-10 选择排序

选择排序

enter description here
enter description here
enter description here

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)

二元选择排序
enter description here
哪里写错了??? #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)

enter description here
enter description here
enter description here

posted @ 2022-04-22 09:55  何时&明月  阅读(46)  评论(0)    收藏  举报