- 已关闭**。此问题需要超过focused。当前不接受答案。
- 想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
8天前关闭。
Improve this question
我不确定逻辑是否正确!有没有人能帮我理清一下?
package DSA;
import java.util.Arrays;
class Arrays_SortnumberofZeroes {
public static void Sort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; i < arr.length; j++) {
if (arr[i] < arr[j]) {
int temp = 0;
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
return;
}
}
}
}
public static void main(String[] args) {
int[] arr = { 1, 1, 1, 1, 1, 0, 0, 0, 5, 4, 5, 6, 5, 5, 4, 5, 7 };
Sort(arr);
System.out.println(Arrays.toString(arr));
}
}
我得到的排序数组输出如下[5, 1, 1, 1, 1, 0, 0, 0, 1, 4, 5, 6, 5, 5, 4, 5, 7]
所示
3条答案
按热度按时间1zmg4dgp1#
你的代码有很多问题。
1.如果返回类型为void,则不需要返回
1.第二个循环变量引用第一个循环
1.如果您尝试实现冒泡排序算法,则第二个循环应从数组的第0个元素开始,否则在某个时候您将获得“ArrayIndexOutOfBoundsException”
1.你的arr对象在main()方法中被本地定义.当你传递它排序()方法并且你不返回排序对象(假设你的算法是正确的),当你打印它时,它基本上是打印原始数组,你的排序方法调用基本上是无用的
1.您可以全局定义数组,如果是局部定义,则可以返回对象或打印方法本身的输出
2w2cym1i2#
可以使用Java中的
sort()
方法按升序对数组进行排序。例如:这将按升序对数组arr进行排序。
icnyk63a3#
这段代码会给予你想要的输出,我假设你要实现的排序算法是冒泡排序(https://www.geeksforgeeks.org/bubble-sort/),所以在第二个for循环中做了一些修改,如果你想了解选择排序,这里有一个链接:https://www.geeksforgeeks.org/selection-sort/无论哪种方式,你都不应该在循环中返回,因为这会导致函数在一次排序后停止。所以我也删除了return语句,这在这里是不需要的,因为函数有void返回类型。就是这样,你的代码现在是正确的,应该工作正常。