首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在一个数组中打印数组函数?

如何在一个数组中打印数组函数?
EN

Stack Overflow用户
提问于 2019-02-17 12:21:51
回答 1查看 58关注 0票数 0

我正在尝试实现合并排序、快速排序、二进制搜索和插值搜索功能。

我已经了解了这两个搜索函数,合并排序和快速排序方法的代码已经基本完成。我想我的print语句有问题,因为我只想打印最后一个数组。

当我运行代码时,我得到的错误是它已经越界了,因为每次调用方法时,它都会重新打印函数。我只想打印这两个方法的最终排序数组。

我只需要弄清楚如何将这两个方法的排序数组输出为一个显示排序列表的数组(每个方法)。我尝试将方法调用转换为返回值并将其输入到数组中,但这是我不确定能做的事情。

代码语言:javascript
复制
public static void merge_sort(int A[], int l, int r){

 if(l < r){
    int m = (l + r)/2;
    merge_sort(A, l, m);
    merge_sort(A, m + 1, r);
    merge(A, l, m, r);
  }
  System.out.println("Merge sorted array:" + Arrays.toString(A));
  }

  public static void merge(int A[], int l, int m, int r){


  int n1 = m - l + 1;
  int n2 = r - m;

  int L[] = new int [n1];
  int R[] = new int [n2];

  for(int i = 0; i < n1; i++){
     L[i] = A[l + i];
  }
  for(int j = 0; j < n2; j++){
     R[j] = A[m + 1 + j];
  }

 int i = 0;
 int j = 0;
 int k = 1;

  while(i < n1 && j < n2){
     if(L[i] <= R[j]){
        A[k] = L[i];
        i++;
     }
     else{
        A[k] = R[j];
        j++;
     }
     k++;
  }

  while(i < n1){
     A[k] = L[i];
     i++; 
     k++;
   }

   while(j < n2){
     A[k] = R[j];
     j++;
     k++;
   }
}

  public static void quick_sort(int A[], int l, int r){

 if(l < r){
   int i = partition(A, l, r);
   quick_sort(A, l, i - 1);
   quick_sort(A, i + 1, r);
 }
 System.out.println("Quick sort of Array: " + Arrays.toString(A));

   }
public static int partition(int A[], int l, int r){

int pivot = A[r];
int i = (l - 1);
for(int j = l; j < r; j++){
  if(A[j] <= pivot){
     i++;
     int temp = A[i];
     A[i] = A[j];
     A[j] = temp;
   }
 }

 int temp = A[i + 1];
 A[i + 1] = A[r];
 A[r] = temp;

 return i + 1;

   } 
    // this is the methods 
    // below is the portion of my main that calls the two sort functions
 int left = 0;
    int right = 14;
    int size = 15;
    //int[] quick = new int[15];
    //int[] merge = new int[15];
    quick_sort(intArray, left, right);
    merge_sort(intArray, left, right);

对于合并排序和快速排序方法,我期望得到一个类似于数组排序元素的输出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-17 12:31:18

不要在排序方法中打印。

让调用者打印合并的结果。它是关于Separation of Concern的,即一个方法应该只关注一件事。

在这种情况下,sort方法应该只进行排序,而不是打印。打印结果超出了排序方法应该做的事情的范围。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54730081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档