---
title: "nybörjare...problem"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/58673-nybörjare-problem"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "P"
published: "2002-11-10T18:13:00.000Z"
updated: "2002-11-12T20:41:46.000Z"
replies: 7
views: 330
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/58673-nybörjare-problem"
---

# nybörjare...problem

## #1 — P, 2002-11-10T18:13Z

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?

Permalänk: https://www.webforum.nu/p/58673

## #2 — Beatbox, 2002-11-10T18:17Z

Fel av mig... jag läste inte tillräckligt...

Permalänk: https://www.webforum.nu/p/851630

## #3 — Phorpher, 2002-11-10T18:34Z

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;
}
```

Permalänk: https://www.webforum.nu/p/851646

## #4 — P, 2002-11-10T19:08Z

danke.... f\*n att jag inte upptäckte det!

Permalänk: https://www.webforum.nu/p/851668

## #5 — P, 2002-11-11T17:34Z

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

Permalänk: https://www.webforum.nu/p/852305

## #6 — PeW, 2002-11-11T21:52Z

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](http://cmpsc.acs.edcc.edu/pbladek/CMPSC143/quicksort_in_c_using_the_stl.htm)

Permalänk: https://www.webforum.nu/p/852520

## #7 — Phorpher, 2002-11-11T23:48Z

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

Permalänk: https://www.webforum.nu/p/852593

## #8 — P, 2002-11-12T20:41Z

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?

Permalänk: https://www.webforum.nu/p/853460

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/58673-nybörjare-problem
