java 需要排序数组的值,例如:整数[] arr = { 1,1,1,1,1,0,0,0,5,4,5,6,5,4,5,7 };按升序排列[已结束]

avwztpqn  于 2023-01-29  发布在  Java
关注(0)|答案(3)|浏览(97)
    • 已关闭**。此问题需要超过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]所示

1zmg4dgp

1zmg4dgp1#

你的代码有很多问题。
1.如果返回类型为void,则不需要返回
1.第二个循环变量引用第一个循环
1.如果您尝试实现冒泡排序算法,则第二个循环应从数组的第0个元素开始,否则在某个时候您将获得“ArrayIndexOutOfBoundsException”
1.你的arr对象在main()方法中被本地定义.当你传递它排序()方法并且你不返回排序对象(假设你的算法是正确的),当你打印它时,它基本上是打印原始数组,你的排序方法调用基本上是无用的
1.您可以全局定义数组,如果是局部定义,则可以返回对象或打印方法本身的输出

2w2cym1i

2w2cym1i2#

可以使用Java中的sort()方法按升序对数组进行排序。例如:

int[] arr = { 1, 1, 1, 1, 1, 0, 0, 0, 5, 4, 5, 6, 5, 5, 4, 5, 7 };
Arrays.sort(arr);

这将按升序对数组arr进行排序。

icnyk63a

icnyk63a3#

这段代码会给予你想要的输出,我假设你要实现的排序算法是冒泡排序(https://www.geeksforgeeks.org/bubble-sort/),所以在第二个for循环中做了一些修改,如果你想了解选择排序,这里有一个链接:https://www.geeksforgeeks.org/selection-sort/无论哪种方式,你都不应该在循环中返回,因为这会导致函数在一次排序后停止。所以我也删除了return语句,这在这里是不需要的,因为函数有void返回类型。就是这样,你的代码现在是正确的,应该工作正常。

import java.util.Arrays;

public class Arrays_SortnumberofZeroes {

    public static void Sort(int[] arr) {

        for (int i = 0; i < arr.length - 1; i++) {
            for (int **j = 0; j < arr.length-i-1**; j++) {
                if (**arr[j] > arr[j+1]**) {
                    int temp = 0;
                    temp = arr**[j]**;
                    arr**[j]** = arr**[j+1]**;
                    arr**[j+1]** = temp;
                }
                
            }
        }
        

    }

    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));
    }
}

相关问题