Das Gegenteil von einem Sortieralgorithmus :D



  • Hallo!

    Naja, der Titel sagt ja schon alles. 😃 Ich suche das sozusagen das Gegenteil von einem Sortieralgorithmus (Bubblesort, Shakersort usw), der ein Array mit n Elementen eben ... wie sagt man dazu... aus der ordnung bringt. ^^ Gibt es sowas überhaupt? Wäre für Anregngen oder Links dankbar!



  • int a[]={0,1,2,3,4,5,6,7,8,9};
    std::random_shuffle(a,a+10);
    for(int i=0;i!=10;++i)
       cout<<a[i];
    


  • danke volkard 😉
    Wusst gar nciht dass es so eine funktion in der standard c-lib gibt 😕
    aber gut zu wissen ^^

    @mods: kann gern geschlossen werden 🕶



  • obwohl doch nicht 😃
    hab mir mal die msdn zur random_shuffle funktion angeschaut un das gefunden:

    // alg_push_heap.cpp
    // compile with: /EHsc
    #include <vector>
    #include <algorithm>
    #include <functional>
    #include <iostream>
    
    int main( ) {
       using namespace std;
       vector <int> v1, v2;
       vector <int>::iterator Iter1, Iter2;
    
       int i;
       for ( i = 1 ; i <= 9 ; i++ )
       {
          v1.push_back( i );
       }
       random_shuffle( v1.begin( ), v1.end( ) );
    
       cout << "Vector v1 is ( " ;
       for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
          cout << *Iter1 << " ";
       cout << ")." << endl;
    
       // Make v1 a heap with default less than ordering
       make_heap ( v1.begin( ), v1.end( ) );
       cout << "The heaped version of vector v1 is ( " ;
       for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
          cout << *Iter1 << " ";
       cout << ")." << endl;
    
       // Add an element to the heap
       v1.push_back( 10 );
       cout << "The heap v1 with 10 pushed back is ( " ;
       for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
          cout << *Iter1 << " ";
       cout << ")." << endl;
    
       push_heap( v1.begin( ), v1.end( ) );
       cout << "The reheaped v1 with 10 added is ( " ;
       for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
          cout << *Iter1 << " ";
       cout << ")." << endl << endl;
    
       // Make v1 a heap with greater than ordering
       make_heap ( v1.begin( ), v1.end( ), greater<int>( ) );
       cout << "The greater-than heaped version of v1 is\n ( " ;
       for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
          cout << *Iter1 << " ";
       cout << ")." << endl;
    
       v1.push_back(0);
       cout << "The greater-than heap v1 with 11 pushed back is\n ( " ;
       for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
          cout << *Iter1 << " ";
       cout << ")." << endl;
    
       push_heap( v1.begin( ), v1.end( ), greater<int>( ) );
       cout << "The greater than reheaped v1 with 11 added is\n ( " ;
       for ( Iter1 = v1.begin( ) ; Iter1 != v1.end( ) ; Iter1++ )
          cout << *Iter1 << " ";
       cout << ")." << endl;
    }
    

    Ich weis das ist jetzt OT aber nur noch eine winzige Frage: was genau macht push_heap()?



  • Das ist für die Verwendung von Heaps, wie sie in Sedgewicks Algorithmen beschrieben sind.



  • Hast srand vergessen.



  • srand schrieb:

    Hast srand vergessen.

    Bist du dir sicher? Das beispiel ist immerhin aus der MSDN... 😕 Und wenn ich mich richtig erinner stand da auch dass du funktion das intern macht... wobei ich grad keien zeit hab genau zu schauen (schule ^^)


Anmelden zum Antworten