Avatar billede ninachristensen Nybegynder
28. februar 2002 - 10:57 Der er 9 kommentarer og
1 løsning

Function der sorterer en array med bubble sort

Hej med jer,
Jeg er skal lave en function der sorterer en array med brug af bubble sort.
void bubblesort (float valuearray [], int n), hvor value array er input array'en.

Jeg vil lave den med brug af en do while loop og en for loop.
Jeg er dog lidt i tvivl om hvordan jeg griber det an.
Er der nogle der har et bud paa det.
Paa forhaand tak!
Avatar billede chries Nybegynder
28. februar 2002 - 18:43 #1
-for- loop:

void bubblesort (float a [], int n)
{
float tmp;
int i, j;

for (i=0; i<n-1; i++) {
  for (j=0; j<n-1-i; j++)
    if (a[j+1] < a[j]) {  /* compare the two neighbors */
      tmp = a[j];        /* swap a[j] and a[j+1]      */
      a[j] = a[j+1];
      a[j+1] = tmp;
  }
}
}
Avatar billede chries Nybegynder
28. februar 2002 - 18:49 #2
do while, også uden meget optimering:

void bubbleSort2(float a[], int n)
{
    bool exchanges;
    do {
      exchanges = false;  // assume no exchanges
      for (int i=0; i<n-1; i++)
      {
          if (a[i] > a[i+1])
          {
            int temp = a[i];
            a[i] = a[i+1];
            a[i+1] = temp;
            exchanges = true;  // after exchange, must look again
          }
      }
    } while (exchanges);
}
Avatar billede chries Nybegynder
28. februar 2002 - 18:50 #3
ups,
int temp = a[i];
ændres til:
float temp = a[i];
Avatar billede ninachristensen Nybegynder
28. februar 2002 - 18:56 #4
hej chries,
Mange tak for dit svar. Min function skulle dog indeholde en for loop OG en do-while loop. Jeg har problemer med at faa do-while loop'en flettet ind. Haaber du kan klare det.
Avatar billede ninachristensen Nybegynder
28. februar 2002 - 18:59 #5
ok, jeg ser du lige fik sendt det afsted mens jeg skrev kommentaren. Jeg skal i skole nu (USA), saa jeg skal lave en driver til det senere og se om det virker, saa jeg kan give dig point. Mange tak for hjaelpen!
Avatar billede chries Nybegynder
28. februar 2002 - 19:40 #6
du kan da godt få test rutinenen oveni :-)

// Test.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "iostream.h"
#include "time.h"
#include "stdlib.h"
#include "stdio.h"



void bubbleSort2(float a[], int n)
{
    bool exchanges;
    do {
      exchanges = false;  // assume no exchanges
      for (int i=0; i<n-1; i++)
      {
          if (a[i] > a[i+1])
          {
            float temp = a[i];
            a[i] = a[i+1];
            a[i+1] = temp;
            exchanges = true;  // after exchange, must look again
          }
      }
    } while (exchanges);
}

void main()
{
    // randomize by time
    srand( (unsigned)time( NULL ) );
   
    // vars used
    int i, n = 10;
    float *array;

    // alloc vars
    array = new float[n];

    // test alloc
    if( array == 0 )
    {
        cout << "alloc failed" << endl;
        return;
    }

    // generate number between 0.0 and 100.0
    for( i = 0; i<n; i++ )
    {
        array[i] = (rand()%1000)*0.1f;
    }

    // cout unsorted
    cout << "unsorted:" << endl;
    for( i = 0; i<n; i++ )
    {
        cout << array[i] << " ";
    }

    bubbleSort2(array, n);

    // cout sorted
    cout << endl << "sorted:" << endl;
    for( i = 0; i<n; i++ )
    {
        cout << array[i] << " ";
    }

    cout << endl;
}
Avatar billede ninachristensen Nybegynder
01. marts 2002 - 23:07 #7
Hej chries,
Programmet koerer som en det skal - jeg saetter pris paa din hjaelp. Jeg er ny her og sidder lige og vil give dig point, det er ikke umiddelbart tydeligt hvordan det skal goeres?
Avatar billede chries Nybegynder
03. marts 2002 - 18:29 #8
ved jeg lægger et svar :-)
Avatar billede chries Nybegynder
03. marts 2002 - 18:29 #9
Ach og jeg husker at flytte den lille prik :-)
Avatar billede ninachristensen Nybegynder
09. marts 2002 - 08:44 #10
hej Chries,
Du har faaet pointene som fortjent. Jeg glemte at gaa tilbage og acceptere - det maa du undskylde.
mange tak for din hjaelp, den var helt kanon :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester