为什么打印不打印我的数组排序

时间:2020-08-14 01:58:40

标签: python arrays sorting for-loop

这是我的原始数组:a = [0, 4, 7, 8, 1, 3, 5, 2, 6]

这是它打印的内容:[0, 4, 7, 0, 0, 0, 5, 0, 0]

for i in a:
    pos = i
    min = a[i]
    for j in a:
        if a[j] < min:
            min = a[j]
            pos = j
        a[pos] = a[i]
        a[i] = min
print(a)

3 个答案:

答案 0 :(得分:4)

作为@'李俊伟',看来您的算法不正确。但是可能还需要指出其他一些事情。

这两行看起来不对。

for i in a:
for j in a:

i和j代表a元素的值而不是索引值。我想你是说

for i in range(len(a)):

得到零的原因是因为min初始化为0。注意,它不是零不是因为索引,而是因为0是数组中的第一个值。一旦min为零,这是该行中数组中的最小值

if a[j] < min:

永远不可能是真的。所以这行

a[i] = min

将所有内容设置为零。尽管每个元素都不为零,因为a [i]不是顺序的。之所以跳来跳去是因为我是元素值而不是索引。

答案 1 :(得分:2)

嗯,您要实现哪种排序算法?如果您要执行的操作是冒泡排序,则应该像这样:

a = [0, 4, 7, 8, 1, 3, 5, 2, 6]

n=len(a)

for i in range(n):
    for j in range(n-1):
        if a[j+1] < a[j]:
            min = a[j+1]
            a[j+1] = a[j]
            a[j] = min

print(a)

答案 2 :(得分:0)

您没有解释您到底想要什么,但是如果您要对数组进行排序,例如从45312到12345 ...

print(sorted(mylist))
a=sorted(mylist)# store in a variable