gpt4 book ai didi

java - 在方法中调用方法?在这种情况下它是如何工作的? ( java )

转载 作者:行者123 更新时间:2023-12-02 07:21:10 25 4
gpt4 key购买 nike

这是一个使用归并排序的程序 - 对 1000 个数字的列表进行 1 - 1000 的排序。它显示原始列表,然后调用递归方法对其进行排序,然后显示它。

代码中我不明白的是这两行:

MergeSort (numbers, low, middle); // within method it will say "HERE"

MergeSort (numbers, middle + 1, high);

我是java初学者,这违背了我学到的一切,因为我无法理解如何在方法中调用方法。除非它是我怀疑的对象。 有人能解释一下这两行代码的作用吗?

import java.io.*;
import java.util.*;
import java.text.*;

public class MergeSortExample
{
static final int Max = 1000;

static void MergeSort (int[] numbers, int lo, int n) // recursive method
{

int low = lo; // 0
int high = n; // 999

if (low >= high) // return case;
{
return;
}

int middle = (low + high) / 2;
MergeSort (numbers, low, middle); // HERE
MergeSort (numbers, middle + 1, high); // HERE

int end_low = middle;
int start_high = middle + 1;

while ((lo <= end_low) && (start_high <= high))
{
if (numbers [low] < numbers [start_high])
{
low++;
}
else
{
int Temp = numbers [start_high];

for (int k = start_high - 1 ; k >= low ; k--)
{
numbers [k + 1] = numbers [k];
}
numbers [low] = Temp;
low++;
end_low++;
start_high++;
}
}




}


public static void main (String str[]) throws IOException
{
BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in));
DecimalFormat df = new DecimalFormat ("#");
BufferedReader reader = new BufferedReader (new FileReader ("unsorted.txt"));
//BufferedWriter writer = new BufferedWriter (new FileWriter ("test.txt", true)); // text to write


int[] numbers = new int [Max]; // if its int the 0's in the beginiing would be cut off
String line = null;
int[] count = {0};

int low = 0;
int high = count [0] - 1;


while ((line = reader.readLine ()) != null)
{
numbers [count [0]] = Integer.parseInt (line);
System.out.println (numbers [count [0]]);

count [0]++;
}
reader.close ();
System.out.println ();
System.out.println ("There are " + count [0] + " numbers.");
System.out.println ();


///////////////////////////////////////////////////////////////////////////////


MergeSort (numbers, 0, count [0] - 1);

for (int i = 0 ; i < count [0] ; i++)
{
System.out.println (numbers [i]);
}




}
}

最佳答案

这是基本的递归。合并排序的工作原理是将列表分为两部分,对每一部分进行合并排序,然后将两个列表合并在一起。您询问的部分是对两个部分进行合并排序的部分。

关于java - 在方法中调用方法?在这种情况下它是如何工作的? ( java ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14207350/

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