PMedlem sedan jan. 20012 204 inlägg Har denna kod (utdrag): (början av en bubblesort)...
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
// PROTOTYP DEKLERATION AV FUNKTIONERNA
int metod1(int osort[1000], int antal, int antalb,int antalj);
int metod2(int osort[1000], int antal, int antalb,int antalj);
int metod3();
// GLOBALA VARIABLER
int osort[11];
int main()
{
const int antal = 10;
int osort1[1000],antalj,antalb;
osort[0]=9;
osort[1]=2;
osort[2]=1;
osort[3]=4;
osort[4]=3;
osort[5]=4;
osort[6]=6;
osort[7]=6;
osort[8]=7;
osort[9]=8;
cout<<"TEST METOD1!\n";
metod1(osort,antal,antalb,antalj);
for(int i=0;i<antal;i++)
{
cout<<osort[i]<<"\n";
}
getch();
}
int metod1(int osort[1000], int antal, int antalb, int antalj)
{
int i,j,temp;
antalj=0;
antalb=0;
for(j=0;j<antal-1;j++)
{
for(i=0;i<antal-1;i++)
{
antalj=antalj+1;
if (osort[i]>osort[i+1])
{
antalb++;
osort[i]=temp;
osort[i]=osort[i+1];
osort[i+1]=temp;
}
}
}
}
sen när jag kör den så funakr typ allt bra förutom att jag längst ner i osort[] får ett annat tal :4236914....
Har suttit hela kvällen med det här... någon?
BeatboxMedlem sedan okt. 20013 217 inlägg Fel av mig... jag läste inte tillräckligt...
PhorpherMedlem sedan feb. 20002 300 inlägg Re: nybörjare...problem
for(j=0;j<antal-1;j++) ...
Bortkommenterat! Fel av mig angående index.
if (osort[i]>osort[i+1])
{
antalb++;
osort[i]=temp;
osort[i]=osort[i+1];
osort[i+1]=temp;
}
temp är ett oinitierat värde. Så tilldelar du osort värdet temp. Dvs osort får ett skräpvärde.
Rätt ska vara:
if (osort[i]>osort[i+1])
{
antalb++;
temp=osort[i];
osort[i]=osort[i+1];
osort[i+1]=temp;
}
PMedlem sedan jan. 20012 204 inlägg danke.... f*n att jag inte upptäckte det!
PMedlem sedan jan. 20012 204 inlägg oki... har gjort 3 funktioner av bubblesort... finns det några fler och bättre altenativ?
1. "Loopar allt 2 ggr"
2. "kör tills den inte gör fler byten"
3. "efter varje steg så finns det största talet längst åt "höger"... då jämförs inte den mer"...
PeWMedlem sedan juni 200010 432 inlägg Bubbelsort räknas som den sämsta algoritmen som nånsin gjorts :e
En som är ungefär lika lätt att implementera men betydligt effektivare är quicksort... det finns dock ännu bättre sorteringsalgoritmer.
En variant av quicksort med STL hittar du här
PhorpherMedlem sedan feb. 20002 300 inlägg
P skrev:
oki... har gjort 3 funktioner av bubblesort... finns det några fler och bättre altenativ?
1. "Loopar allt 2 ggr"
2. "kör tills den inte gör fler byten"
3. "efter varje steg så finns det största talet längst åt "höger"... då jämförs inte den mer"...
Kör från båda hållen.
Du vet att efter en körning så finns det största talet i arrayen "längst till höger". Gör på samma sätt så att det minsta talet hamnar "längst till vänster". Dvs. looparna kommer att "mötas" på mitten och sorteringen är klar. :)
PMedlem sedan jan. 20012 204 inlägg men tjänar man något på det jämfört med att bara köra åt höger? om man nu jämför antalet jämförelser & byten?