java - 在驱动程序中调用排序算法
问题描述
我对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 ];
}
}
这个算法应该可以正常工作,它只需要一个 main 方法,为它提供一个整数,用于随机生成的数字数组的大小。所以我正在尝试创建该驱动程序但未能成功。
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);
}
}
我在这里想念什么?
解决方案
您的驱动程序代码应为:
int size = 50;
MergeSort mergeSort = new MergeSort(size);
mergeSort.sort();
此时您无权访问数据,但可能会getData()
向该类添加一个方法MergeSort
:
System.out.println(mergeSort.getData());
或者toString()
在MergeSort
类中实现:
System.out.println(mergeSort);
推荐阅读
- sonarqube - 如何在 AWS elasticbeanstalk 中配置 sonarqube 7.1
- python - Python - 多处理最大进程数
- android - 使用 Android Jetpack 从导航抽屉导航
- php - SQL LEFT JOIN & AND 关键字
- python - 使用python matplotlib的X轴时间刻度显示问题
- testing - 编写测试时如何检索路线的模型()?
- reporting-services - 无法将 SSRS 或 SSIS 包从 SQL Server Data Tools 包安装到 Visual Studio 2017
- javascript - 如何删除 Ext JS 中的禁用属性
- c# - 我的 wpf 应用程序在 Windows 服务器上的不同行为
- php - openssl_decrypt 图像未显示