3. 二元选择排序

参见B.1.2. 简单选择排序

定义

在简单选择排序的基础上,一次遍历时直接同时找到最大值与最小值。

优点(与简单选择排序比较)

减少了遍历次数

代码实现

nums = [1, 9, 8, 5, 6, 7, 4 , 3, 2]
length = len(nums)
for i in range(length-1):
    max_index = i
    min_index = length-1-i
    for j in range(i+1,length):
        if nums[max_index] < nums[j]:
            max_index = j
        if nums[min_index] > nums[length-j]:
            min_index = length - j
    if nums[max_index] == nums[min_index]:
        break
    if i!=max_index:
        nums[i],nums[max_index] = nums[max_index],nums[i]
        if i - length  == min_index:
            min_index = max_index - length
    if length - i -1 != min_index and nums[length - i - 1] != nums[min_index]: 
        nums[length - i -1],nums[min_index] = nums[min_index],nums[length - i - 1]
print(nums)

Last updated