gpt4 book ai didi

java - 手动按升序对数组进行排序

转载 作者:搜寻专家 更新时间:2023-10-31 19:40:54 25 4
gpt4 key购买 nike

我有一个家庭作业,要按升序对数组进行排序。显然,这是在不使用任何类型的 sort() 函数的情况下手动完成的。

我想这样做,我需要两个 for 循环:第一个循环将遍历现有数组并使用数组的值和索引创建一个临时值。第二个循环将临时值与现有值进行比较并对它们进行排序。我一直在尝试编写代码,但我似乎就是做不对。这是我想出的最新方法:

public int[] sortArray (int[] inArray)
{
//Construct the array we're using here
int[] newArray = inArray;

for(int x = 0; x < a.length; x++) //a.length = # of indices in the array
{
int tempValue = a[x];
int tempIndex = x;

for(int y = 0; y < a.length; y++)
{
if(tempValue < a[y])
{
newArray[x] = tempValue;
}
}
}

return newArray;
}

我很确定这是不正确的,但如果有人能把我推向正确的方向,我将不胜感激!

最佳答案

您的 Selection Sorter 版本几乎没问题.您需要从 x+1 开始您的 y,而不是 0。否则,您将重新扫描数组的已排序部分。您还应该注意,选择排序是一种就地算法;如果您要制作数组的副本,您应该使用Arrays.copy 方法,否则int[] newArray = inArray;
正在创建别名,而不是副本。最后,嵌套循环中的 if 语句应该交换 a[x]a[y],而不是只需将 tempValue 放入:

if(newArray[x] < newArray [y]) {
int tempValue = newArray[y];
newArray[y] = newArray[x];
newArray[x] = tempValue;
}

关于java - 手动按升序对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9927714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com