Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Bubblesort

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.01.2004, 08:43 Uhr
~puschel
Gast


Moin hab folgendes Problem.

also ich hab ein Arrey das mit 5 Zufallszahlen gefüllt ist.
Die sollen nun aufsteigend sortiert werden.

Da ich doch absolut keinen blaßen schimmer habe wie ich das hinbekomme,dachte ich ihr könnt mir helfen.


C++:
#include <iostream.h>
#include <conio.h>

void main()
{
int i,n;
int Arrey[4];
randomize();

for(i=4;i>=0;--i)
        {
        Arrey[i]=random(30);
        cout<<Arrey[i]<<"\t";
        for(int x=0;x<i;++x)
                {
                if(Arrey[i-1]<Arrey[i])
                        {
                        n=Arrey[i-1];
                        Arrey[i-1]=Arrey[i];
                        Arrey[i]=n;
                        }
                }
        }
        cout<<endl;
        for(i=0;i<5;i++)
                {
                cout<<Arrey[i]<<"\t";
                }


getch();
}



danke im vorraus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.01.2004, 09:16 Uhr
(un)wissender
Niveauwart


randomize oder random sind mir unbekannt, void main auch, ebenso wie iostream.h .
Außerdem greifst du auf Speicher zurück, der dir nicht gehört, bei Array[4] kann du maximal auf das [3]-Element zurückgreifen, es wird bei null begonnen zu zählen.
Das sollte es tun:


C++:
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>

int main() {
    int array_length = 5; //5!!!
    int my_array[array_length];
    //Damit nicht immer die gleiche Zahlentreihe kommt.
    srand(time(NULL));  
    
    for(int i = 0; i < array_length; ++i) {        
        //Zufallszahl erzeugen
        my_array[i] = rand();
        //Ausgabe
        std::cout << my_array[i] << " ";
    }
    std::cout << std::endl;
    
    //Sortieren
    std::sort(my_array, my_array + array_length);
    
    //Wieder ausgeben
    for(int i = 0; i < array_length; ++i) {              
        std::cout << my_array[i] << " ";
    }
    std::cout << std::endl;
        
    return 0;
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.01.2004, 09:29 Uhr
(un)wissender
Niveauwart


Dss wäre die Version mit einem handgemachten Bubblesort, aber man sollte auf jeden Fall std::sort nehmen, ist schneller, standard und sicher.


C++:
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <ctime>

void int_bubblesort(int int_array[], int length) {
    bool changed = true;
    while(changed) {
        changed = false;
        for(int i = 0; i < length - 1; ++i) {
            if(int_array[i] > int_array[i + 1]) {
                int temp = int_array[i];
                int_array[i] = int_array[i + 1];
                int_array[i + 1] = temp;
                changed = true;
            }
        }
    }
}

int main() {
    int array_length = 5; //5!!!
    int my_array[array_length];
    //Damit nicht immer die gleiche Zahlentreihe kommt.
    srand(time(NULL));  
           for(int i = 0; i < array_length; ++i) {        
        //Zufallszahl erzeugen
        my_array[i] = rand();
        //Ausgabe
        std::cout << my_array[i] << " ";
    }
    std::cout << std::endl;
    
    //Sortieren
    int_bubblesort(my_array, array_length);
    //std::sort(my_array, my_array + array_length);
    
    //Wieder ausgeben
    for(int i = 0; i < array_length; ++i) {              
        std::cout << my_array[i] << " ";
    }
    std::cout << std::endl;
        
    return 0;
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.01.2004, 10:32 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@(un)wissender
das ist aber kein schöner BubbleSort...
Der versucht ja immer bis zum Arrayende "durchzubabblen"...obwohl das ja ab dem zweiten schleifendurchlauf nicht mehr nötig ist bis ganz zum ende zu "bubblen"...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.01.2004, 11:25 Uhr
(un)wissender
Niveauwart


@Windalf
War auch nicht das Ziel, sondern es möglichst einfach zu halten, damit @puschel damit zurecht kommt.



Bearbeitung:

@Puschel
Wie @Windalf schon anmerkte, kannst du den Bubblesort optimieren, indem du bei jedem Schleifendurchlauf einen von der Länge abziehst, evtl. sogar mehr, wenn kein swap da war.
Warum?
Weil das größe verbleibende Element auf jeden Fall an der letzten zu untersuchenden Stelle liegt.

Macht aber eh nicht viel Sinn, nimm std::sort.


--
Wer früher stirbt ist länger tot.

Dieser Post wurde am 20.01.2004 um 11:29 Uhr von (un)wissender editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.01.2004, 11:27 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


das ist ja ne faule Ausrede...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
20.01.2004, 11:30 Uhr
(un)wissender
Niveauwart


@windalf
Ach, rutsch mir doch den Buckel runter!

--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
20.01.2004, 11:31 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: