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....
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"...
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. :)