Problemen met de uitvoering van Treesort ()

stemmen
1

Dus, mijn dokter vraagt ​​me om Treesort () implementeert en test het op int [1000000] en bereken de tijd.

Ik heb klasse BSTree<E>die de volgende methoden bevat:

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
    }
}

en ik heb Process<E>klasse:

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

en ik heb de volgende Mainklasse:

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!
    }
}

De fout is:

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

Ik bevestigde dat door het veranderen treeSort(int[] data)aan treeSort(Integer[] data). Maar ik heb een fout in de belangrijkste methode bijtreeSort(temp);

en de fout is:

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

Dus, hoe kan ik omgaan met deze kwestie met rekening houdend niet verhogen van de complexiteit tijd waar ik deze methode moet proberen op 1.000.000 inputs?

De vraag is gesteld op 19/05/2011 om 13:49
bron van user
In andere talen...                            


2 antwoorden

stemmen
0

Generics kan niet basisklassen. U kunt gebruik maken van Integer [] in plaats van int [], en vertrouwen op autoboxing.

antwoordde op 19/05/2011 om 13:54
bron van user

stemmen
1

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

EDIT: het gebruiken om tweede fout te herstellen.

antwoordde op 19/05/2011 om 13:56
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more