为什么这种排序算法有效?

Oli*_*tti 0 sorting algorithm

我有以下算法来订购一个包含10个数字的.txt文件

for (int i=0;i<array.length;i++)
{
    for(int j=i;j<array.length;j++)
    {
        if (array[i]<array[j])
        {
            temp=array[i];
            array[i]=array[j];
            array[j]=temp;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它会按顺序写入一个包含所有数字的新.txt文件.但是用笔纸说它不应该起作用.它是以下内容:

7 10 4 3 5 8 1 3
Run Code Online (Sandbox Code Playgroud)

算法应该这样做:

10 7 4 3 5 8 1 3
10 8 4 3 5 7 1 3
10 8 5 3 4 7 1 3
10 8 5 4 3 7 1 3
10 8 5 4 7 3 1 3
10 8 5 4 7 3 3 1
Run Code Online (Sandbox Code Playgroud)

显然,最后一行不是有序的,为什么代码做得对呢?或者......当我用笔和纸做的时候,我哪里错了?

Err*_*Efe 5

为什么它不起作用?这是一种非常基本的排序算法(称为选择排序).你的钢笔和铅笔的问题在于你忘记了外面的问题for.继续为每个项目排序.这就是它O(n^2)复杂性的原因.