Sortieralgorithmus



  • Ich möchte einfach nur mal nen Sortieralgorithmus zum Luafen bringen, aber es geht nicht:

    #include <iostream.h>
    
    template <class itemType, class indexType=int>
    void QuickSort(itemType a[], indexType l, indexType r)
    {
        static itemType m;
        static indexType j;
        indexType i;
    
        if(r > l) {
            m = a[r]; i = l-1; j = r;
            for(;;) {
                while(a[++i] < m);
                while(a[--j] > m);
                if(i >= j) break;
                std::swap(a[i], a[j]);
            }
            std::swap(a[i],a[r]);
            QuickSort(a,l,i-1);
            QuickSort(a,i+1,r);
        }
    }
    
    int main (void) {
    
    	int *pArray = new int[10]; 
    
    	pArray[0]=1;
    	pArray[1]=7;
    	pArray[2]=19;
    	pArray[3]=53;
    	pArray[4]=42;
    	pArray[5]=17;
    	pArray[6]=19;
    	pArray[7]=12;
    	pArray[8]=99;
    	pArray[9]=11;
    
    	QuickSort<int[],int>(pArray,0,9);
    
    	for (int i=0; i<10; i++ ) {
    		cout <<pArray[i]<< endl;
    	}
    
    	return 0;
    }
    

    Fehler:

    warning C4519: Standard-Vorlagenargumente sind nur für eine Klassenvorlage erlaubt; wird ignoriert

    error C2664: 'QuickSort' : Konvertierung des Parameters 1 von 'int *' in 'int [][1]' nicht moeglich

    Die Typen, auf die verwiesen wird, sind nicht verwandt; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat

    Ich verzweifele noch, da ich java gewöhnt bin und dort ich auch so "java stil mäßig" denke!

    Was muß ich verändern damit es geht?



  • template <class itemType, class indexType>
    //..
    // der compiler schafft es selbst aufzulösen wenn du willst kannst du es mit angeben
    QuickSort(pArray,0,9);
    

    zu iostream
    http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=iostream#Answ


Anmelden zum Antworten