2011-05-19 89 views
1

因此,我的醫生讓我執行treeSort(),然後在int [1000000]上測試它並計算時間。執行treeSort問題()

我有類BSTree<E>它包含以下方法:

public void treeSort(E[] data) 
{ 
    inorder(data, new Process<E>(), root); 
} 

public static <E> void inorder(E[] list, Process<E> proc, BTNode<E> p) 
{ 
    if (p != null) 
    { 
     inorder(list, proc, p.getLeft()); // Traverse its left subtree 
     proc.append(list, p.getElement()); // Process the node 
     inorder(list, proc, p.getRight()); // Traverse its right subtree 
    } 
} 

,我有Process<E>類:

public class Process<E> 
{ 
    private int counter = 0; 
    public void append(E[] list, E element) 
    { 
     list[counter] = element; 
     counter++; 
    } 
} 

,我有以下Main類:

public class Main 
{ 
    public static void main(String[] args) 
    { 
     int[] temp = {4,2,6,4,5,2,9,7,11,0,-1,4,-5}; 
     treeSort(temp); 
     for(int s : temp) System.out.println(s); 
    } 

    public static void treeSort(int[] data) 
    { 
     BSTree<Integer> tree = new BSTree<Integer>(); 
     for(int i: data) tree.insert(i); 
     tree.inorder(data, new Process<Integer>(), tree.getRoot()); // I get an error here! 
    } 
} 

的錯誤是:

cannot find symbol - method inorder(int[], Process<java.lang.Integer>, BTNode<java.lang.Integer>); maybe you meant: inorder(E[], Process<E>, BTNode<E>); 

我修改了treeSort(int[] data)treeSort(Integer[] data)。但我在treeSort(temp);

得到的主要方法錯誤,錯誤的是:

treeSort(java.lang.Integer) in Main cannot be applied to (int[]) 

所以,我該怎麼處理這個問題有考慮到不增加複雜性時,我應該試試這個方法一百萬輸入?

+0

你有史以來最差的醫生。我通常只是收錢給他看。 – Woot4Moo 2011-05-19 14:18:56

回答

1

Integer [] temp = {4,2,6,4,5,2,9,7,11,0,-1,4,-5};

編輯:用它來修復第二個錯誤。

0

泛型不能是基本類。您可以使用Integer []而不是int [],並依靠自動裝箱。