【问题标题】:Java, array return [duplicate]Java,数组返回[重复]
【发布时间】:2018-04-26 04:00:16
【问题描述】:

我是 Java 新手。我正在通过 Programming Hub 应用程序学习。当我阅读 HeapSort 代码时,我发现 fnSortHeap 方法不返回数组,但 main 方法仍然可以打印出来。从我在 main 方法中找到的信息必须是这样的:

int arr2[];

arr2 = fnSortHeap(arr, i - 1);

并且在fnSortHeap方法中必须

返回数组;

class HeapSort
{
    public static void main(String a[])
    {
        int i;
        int arr[] = {1, 3, 4, 5, 2};

        System.out.println("\nUnsorted Array\n---------------");

        for (i = 0; i < arr.length; i++)
        {
            System.out.print(" " + arr[i]);
        }

        for (i = arr.length; i > 1; i--)
        {
            fnSortHeap(arr, i - 1);
        }

        System.out.println("\n\nSorted array\n---------------");

        for (i = 0; i < arr.length; i++)
        {
            System.out.print(" " + arr[i]);
        }
    }

    public static void fnSortHeap(int array[], int arr_ubound)
    {
        int i, o;
        int lChild, rChild, mChild, root, temp;

        root = (arr_ubound - 1) / 2;

        for (o = root; o >= 0; o--)
        {
            for (i = root; i >= 0; i--)
            {
                lChild = (2 * i) + 1;
                rChild = (2 * i) + 2;

                if ((lChild <= arr_ubound) && (rChild <= arr_ubound))
                {
                    if (array[rChild] >= array[lChild])
                        mChild = rChild;
                    else
                        mChild = lChild;
                }
                else
                {
                    if (rChild > arr_ubound)
                        mChild = lChild;
                    else
                        mChild = rChild;
                }

                if (array[i] < array[mChild])
                {
                    temp = array[i];
                    array[i] = array[mChild];
                    array[mChild] = temp;
                }
            }
        }

        temp = array[0];
        array[0] = array[arr_ubound];
        array[arr_ubound] = temp;
        return;
    }
}

【问题讨论】:

  • 你的问题是什么?
  • fnSortHeap 方法直接使用给定的arr 参数进行处理。其实你的arr在每次调用方法时都被改变了

标签: java arrays sorting


【解决方案1】:

Java 是按值传递的。请参考java pass by value

我认为您的问题是,main 方法实际上没有返回任何内容时,main 方法如何能够打印排序数组。

如果这是问题,那么答案在上面的链接中。 无论如何,您正在传递数组输入,fnSortHeap 方法将数组排序为相同的数组(不创建任何重复项),而 Main 方法正在打印相同的数组。

【讨论】:

  • 非常感谢!!!不知道那件事。我的第一语言是 C
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-07-12
  • 2020-10-13
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多