分析
[9, 2, 3, 5, 1, 2, 8] 列表长度为7
假设是9(即索引0),则最多交换 (7-1)-0 = 6 次
假设是2(即索引1),则最多交换 (7-1)-1 = 5 次
推理:假设索引为index,则最多交换 (列表长度-1-index) 次
代码
def list_sort(array):
count = 0 # 记录一下交换的次数,如果为0则说明array本就是有序列表
for i in range(len(array) - 1): # 首先遍历列表的索引,方便取到每一个值
for j in range(len(array) - 1 - i): # 在根据列表索引位置,判断最多交换几次
print("列表索引:{j} 值:{value}".format(j=j, value=array[j]))
if array[j] > array[j + 1]:
print("发现左比右大----->{}比{}".format(array[j], array[j + 1]))
array[j], array[j + 1] = array[j + 1], array[j]
count += 1
print("交换{}次了, 列表现在是:{}".format(count, array))
if count == 0: # count为0,说明没有交换过一次,直接原列表皆可
print("这原本就是有序列表")
return array
return array
if __name__ == '__main__':
array = [22, 33, 99, 11, 55]
print(list_sort(array))
print()
print(list_sort([1, 2, 3]))
print()