我在网上发现了一个标签排序算法的java示例,我决定将它实现到我的代码中。
我需要一种非破坏性的数组排序方式,因此使用单独的数组作为排序顺序的索引似乎就是这样。
这是我找到的代码:
int n = persons.length;
for (int i=0; i<n; i++)
{
for (int j=i+1; j<n; j++)
{
if (persons[tag[i]].getSalary() >
persons[tag[j]].getSalary())
{
int temp = tag[i];
tag[i] = tag[j];
tag[j] = temp;
}
}
}
因此我将其改编为:(不是任何已知的脚本语言,来自冒险游戏引擎)
for (int i = 0; i < 5; i++)
{
for (int j = i+1; j < 5; j++)
{
if (testOriginal[testOrdered[i]] > testOriginal[testOrdered[j]])
{
int temp = testOrdered[i];
testOrdered[i] = testOrdered[j];
testOrdered[j] = temp;
}
}
}
但是当序列[6,5,3,8,1]中的馈送(例如)时,它会吐出&#34; 42103&#34;,这显然是不正确的。它应该是&#34; 32140&#34;。我遵循了纸上功能的逻辑并得到了相同的结果。
但是,当我运行java版本时,它每次都能完美运行。
有人可以帮我看看我哪里出错吗?我知道我必须在某个地方犯一些愚蠢的错误。
提前致谢!