我对java很新,我对在单独的类文件中调用类文件的语法有疑问。所以我有以下排序算法:
import java.util.Random;
public class MergeSort {
private int[] data;
private static final Random generator = new Random();
public MergeSort( int size ) {
data = new int[ size ];
for ( int i = 0; i < size; i++ )
data[ i ] = 10 + generator.nextInt( 90 );
}
// call this method from main program
public void sort() {
sortArray( 0, data.length - 1 );
}
private void sortArray( int low, int high )
{
if ( ( high - low ) >= 1 ) {
int middle1 = ( low + high ) / 2;
int middle2 = middle1 + 1;
sortArray( low, middle1 );
sortArray( middle2, high );
merge ( low, middle1, middle2, high );
}
}
private void merge( int left, int middle1, int middle2, int right )
{
int leftIndex = left;
int rightIndex = middle2;
int combinedIndex = left;
int[] combined = new int[ data.length ];
while ( leftIndex <= middle1 && rightIndex <= right ) {
if ( data[ leftIndex ] <= data[ rightIndex ] )
combined[ combinedIndex++ ] = data[ leftIndex++ ];
else
combined[ combinedIndex++ ] = data[ rightIndex++ ];
}
if ( leftIndex == middle2 )
while ( rightIndex <= right )
combined[ combinedIndex++ ] = data[ rightIndex++ ];
else
while ( leftIndex <= middle1 )
combined[ combinedIndex++ ] = data[ leftIndex++ ];
for ( int i = left; i <= right; i++ )
data[ i ] = combined[ i ];
}
}
这个算法应该可以正常工作它只需要一个主方法,它为随机生成的数组的大小提供一个整数。所以我正在尝试并且未能创建该驱动程序。
import java.util.Arrays;
import java.util.Random;
public class Sorting
{
public static void main(String args[]){
size=50;
int[] data= MergeSort(size);
System.out.println(data);
}
}
我在这里缺少什么?
答案 0 :(得分:0)
您的驱动程序代码应为:
getData()
此时您无法访问数据,但可能会向MergeSort
类添加System.out.println(mergeSort.getData());
方法:
toString()
或在MergeSort
课程中实施System.out.println(mergeSort);
:
{{1}}
答案 1 :(得分:0)
您必须先创建类MergeSort sorter = MergeSort(size);
的类实例。然后按照我看到的方法调用所创建实例的方法sort()
方法并获取返回值。要直接打印数组,您可以使用System.out.println(Arrays.toString(data));
。同时将sort()
方法的返回类型更改为int []
并返回最终排序的数组。总体而言,主方法中的更正代码应如下所示:
public class Sorting
{
public static void main(String args[]){
int size=50;
MergeSort sorter = MergeSort(size);
int [] data = sorter.sort();
System.out.println(Arrays.toString(data));
}
}
修改后的sort()
方法将是
public int [] sort() {
sortArray( 0, data.length - 1 );
return data;
}
答案 2 :(得分:0)
您需要创建MergeSort类的实例才能使用它。像这样:
public class Sorting
{
public static void main(String args[]) {
size=50;
MergeSort sorter = new MergeSort(size);
sorter.sort();
}
}
您还需要一种方法将数据返回给调用者,如下所示(在MergeSort类中):
int[] getData() {
return data;
}