升序降序排列,我排出来却不对

编写程序,将列表中的前10个元素升序排列,后10个元素降序排列,并输出结果。我的程序虽然排出来顺序了,但是前10位数字明明没有5,但是我的却索引到了5,这是为什么?
程序如下:

# 打印输出 list_pre
list_pre = [36, 19, 77, 80, 63, 99, 94, 21, 39, 44, 35, 79, 52, 49, 10, 83, 30, 96, 5, 36]
# 请对上面列表中的元素进行排序
for j in range(0, 10):
    for i in range(0, 10):
        if list_pre[i] > list_pre[i + 1]:
            a = list_pre[i]
            list_pre[i] = list_pre[i + 1]
            list_pre[i + 1] = a
for j in range(0, 10):
    for i in range(-11, 0):
        if list_pre[i] < list_pre[i + 1]:
            a = list_pre[i]
            list_pre[i] = list_pre[i + 1]
            list_pre[i + 1] = a
print(list_pre)

运行结果如下,可以看到第一个数字本来不应该是5,应该是19,但是却是5.

img


# for i in range(-11, 0)  这句代码有问题
# 当i = -1时, 下面的if 有i+1;正好渠道list_pre[0] 即第一次排完升序的第一个数5
# for i in range(-11, 0) 修改为# for i in range(-10, -1) 
# -10 才是倒数第10个

排序逻辑完全正确,只是排序的参数有点不对,参考修改如下

# 打印输出 list_pre
list_pre = [36, 19, 77, 80, 63, 99, 94, 21, 39, 44, 35, 79, 52, 49, 10, 83, 30, 96, 5, 36]
# 请对上面列表中的元素进行排序
for j in range(0, 10):
    for i in range(0, 10):
        if list_pre[i] > list_pre[i + 1]:
            a = list_pre[i]
            list_pre[i] = list_pre[i + 1]
            list_pre[i + 1] = a
for j in range(0, 10):
    for i in range(10, 19):
        if list_pre[i] < list_pre[i + 1]:
            a = list_pre[i]
            list_pre[i] = list_pre[i + 1]
            list_pre[i + 1] = a
print(list_pre)

img


list_pre = [36, 19, 77, 80, 63, 99, 94, 21, 39, 44, 35, 79, 52, 49, 10, 83, 30, 96, 5, 36]
# 请对上面列表中的元素进行排序
for j in range(0, 10):
    for i in range(0, 9):
        if list_pre[i] > list_pre[i + 1]:
            a = list_pre[i]
            list_pre[i] = list_pre[i + 1]
            list_pre[i + 1] = a
print(list_pre)
for j in range(0, 10):
    for i in range(10, len(list_pre) - 1):
        if list_pre[i] < list_pre[i + 1]:
            a = list_pre[i]
            list_pre[i] = list_pre[i + 1]
            list_pre[i + 1] = a
print(list_pre)