2012-03-19 108 views
1

我一直在尝试使用快速排序和自下而上的合并排序来完成一个项目,但我被困在快速排序上。我已经能够想出一些代码,但每当我尝试运行我的程序时,我得到的错误“quickSort(int [],int,int)不能应用于(int [])”任何提示? 这里的代码...排序项目

import java.util.Random; 
public class main { 


    public static void main(String[] args) { 
     Random gen = new Random(); 
     int[] a = new int[20]; 

     for (int i = 0; i < a.length; i++) 
     a[i] = gen.nextInt(100); 

     printArray(a); 
     quickSort(a); 
    } 

    private static void printArray(int[] a){ 
     for (int i : a) 
     System.out.print(i + " "); 
     System.out.println(""); 
    } 
     private static void quickSort(int a[], int left, int right){ 
     int i = left, j = right; 
     int tmp; 
     int pivot = a[(left + right)/2]; 
     while (i <= j) { 
      while (a[i] < pivot) 
        i++; 
      while (a[j] > pivot) 
        j--; 
      if (i <= j) { 
        tmp = a[i]; 
        a[i] = a[j]; 
        a[j] = tmp; 
        i++; 
        j--; 
     } 
    } 
    if (left < j) 
     quickSort(a, left, j); 
    if (i < right) 
      quickSort(a, i, right); 
} 
+2

为什么这个标签C++? – Marlon 2012-03-19 00:29:19

回答

0

quickSort函数有三个参数,但你只有一个调用它。

0

您第一次调用quicksort时没有正确的语法。该方法需要3个参数。

quickSort(a); 

我想你想

quickSort(a, 0, 19); //might be 20 I don't know if it's size or last element index