java - 在驱动程序中调用排序算法

标签 java class sorting

我对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);


 }
}

我在这里缺少什么?

最佳答案

您的驱动程序代码应该是:

int size = 50;
MergeSort mergeSort = new MergeSort(size);
mergeSort.sort();

此时您无权访问数据,但可以向 MergeSort 类添加 getData() 方法:

System.out.println(mergeSort.getData());

或者在MergeSort类中实现toString():

System.out.println(mergeSort);

关于java - 在驱动程序中调用排序算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50475993/

相关文章:

c# - 当我将 MySqlConnection 放在其他类中并从其他表单调用它时,如何创建 MySqlCommand

java - 在 .java 中导入自己的类文件

java - 按行内的元素对 ArrayList 中的行进行排序

Java 8 检查其键的 HashMap 是否与包含键的列表相等,并返回它们相等的 HashMap 值

java - 通过 REST API 检索结果并将其显示在新 Activity 的 ListView 中( ListView 出现小问题)

java - 在多线程环境中清除嵌套循环中的 Map

python - 如何对排序文件进行分组并保留组顺序

java - 使用 URL 类加载器执行 jar 文件内容

带接口(interface)的 Java 匿名类

excel - 对包含合并单元格的 Excel 表进行排序