我有以下算法来订购包含 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;
}
}
}
然后它会按顺序写入一个包含所有数字的新 .txt 文件。但是用笔写纸说它不应该工作。内容如下:
7 10 4 3 5 8 1 3
算法应该这样做:
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
很明显,最后一行顺序不对,那么为什么代码是正确的呢?或者...我用笔和纸做的时候哪里错了?
最佳答案
为什么它不起作用?这是一个非常基本的排序算法(称为 selection sort )。你的钢笔和铅笔的问题是你忘记了外面的 for
。继续对每个项目进行排序。这就是它的复杂度为 O(n^2)
的原因。
关于algorithm - 为什么这种排序算法有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17839844/