• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sortowanie Bąbelkowe

Object Storage Arubacloud
0 głosów
177 wizyt
pytanie zadane 14 kwietnia 2018 w C i C++ przez Iwan Iwański Nowicjusz (150 p.)

Witam! W odcinku pod tytułem Sortowanie. Złożoność algorytmów zrobiłem sortowanie bąbelkowe. Mam pewien problem. Jak chcę posortować 6, 8, 9, (lub więcej liczb) to zawsze ta największa zamienia się w jakieś 20000 pomimo że losuję liczby do 5. Wyskakuje mi też na Windowsie error APPCRASH. Przy np 10000 liczbach normalnie już sortuje...

#include <iostream>
#include <windows.h>
#include <time.h>
using namespace std;

int ile, n, brufor;
clock_t start, stop;
double czas;

void sortowanie_babelkowe(int *tab, int n, int zmienna)
{
    for(int i=0; i<=n; i++)
    {
        for(int j=0; j<=n; j++)
        {
            if(tab[j]>tab[j-1])
            {

                int zmienna = tab[j-1];
                tab[j-1] = tab[j];
                tab[j] = zmienna;
            }
        }
    }
}

int main()
{
    cout << "Ile liczb losowych ma byc w tablicy?: ";
    cin >> ile;

    int *tablica;
    tablica = new int [ile];

    srand(time(NULL));
    for(int i=0; i<ile; i++)
    {
        tablica[i] = rand()%5+1;
        //cout << tablica[i] <<endl;
    }
    cout <<"Przed sortowaniem: "<<endl;
    for(int i=0; i<ile; i++)
    {
        cout << tablica[i] <<endl;
    }
    cout <<"Sortuje teraz babelkowo! Prosze czekac!"<<endl;

    start = clock();

    sortowanie_babelkowe(tablica, ile, brufor);

    stop = clock();

    czas = (double)(stop-start) / CLOCKS_PER_SEC;

    for(int i=0; i<ile; i++)
    {
        cout << tablica[i] <<endl;
    }

    cout <<endl<<"Wykonanie zajelo: "<<czas<<" s"<<endl;

    delete [] tablica;
    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 14 kwietnia 2018 przez RafalS VIP (122,820 p.)
wybrane 14 kwietnia 2018 przez Iwan Iwański
 
Najlepsza
Wychodzisz poza zakres tablicy. Warunki w pętlach powinny być < a nie <=.
komentarz 14 kwietnia 2018 przez Iwan Iwański Nowicjusz (150 p.)

Dzięki! Działa smiley

komentarz 14 kwietnia 2018 przez RafalS VIP (122,820 p.)
Tak na marginesie dodam jeszcze, że niepotrzebnie stosujesz zmienne globalne. Np czas, start i stop. Używasz ich tylko i wyłącznie w mainie, więc czemu ich tam nie zdeklarować?
Reszta zmiennych globalnych jest troszke bez sensu :P. Bo są globalne, czyli widocznie wszędzie a mimo to przesyłasz je (a dokładnie ich kopie) do funkcji, gdzie bez tego już są widoczne i osiągalne.
A zmienna brufor aka zmienna to już jest hardkor ;P. Jest zmienną globalną, której kopia jest przesyłana do funkcji, gdzie potem jest przesłaniana w linijce 19. przez kolejną deklaracje :D. Pewnie nie miałeś na myśli tworzenia 3 różnych zmiennych?
Polecam zrezygnować ze zmiennych globalnych, bo to zła praktyka i zmienne przesyłać do funkcji przez argumenty.
komentarz 14 kwietnia 2018 przez Iwan Iwański Nowicjusz (150 p.)
Nie wiedziałem że to ma znaczenie... Wczoraj robiłem ten kod koło 22 xD

Podobne pytania

0 głosów
1 odpowiedź 542 wizyt
pytanie zadane 24 października 2021 w C i C++ przez pita Nowicjusz (180 p.)
0 głosów
1 odpowiedź 802 wizyt
pytanie zadane 2 lutego 2021 w C i C++ przez Kamirru9 Początkujący (300 p.)
0 głosów
2 odpowiedzi 1,090 wizyt
pytanie zadane 12 czerwca 2020 w C i C++ przez ania1210 Nowicjusz (200 p.)

92,573 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...