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

Problem z funkcją sortowania Quicksort

Object Storage Arubacloud
0 głosów
396 wizyt
pytanie zadane 22 sierpnia 2016 w C i C++ przez Piotr Lis Obywatel (1,310 p.)
#include <iostream>

using namespace std;

void quicksort(int *tablica, int lewy, int prawy)
{
    int v=tablica[(lewy+prawy)/2];
    int i,j,x;
    i=lewy;
    j=prawy;
    do
    {
        while (tablica[i]<v) i++;
        while (tablica[j]>v) j--;
        if (i<=j)
        {
            x=tablica[i];
            tablica[i]=tablica[j];
            tablica[j]=x;
            i++;
            j--;
        }
    }
    while (i<=j);
    if (j>lewy) quicksort(tablica,lewy, j);
    if (i<prawy) quicksort(tablica, i, prawy);
}

int main()
{
int ile;
cout << "Ile liczb chcesz posotowac" << endl;
    cin >> ile;

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

cout << "Napisz te liczby\n" << endl;

    //wczytanie z klawiatury
    for(int i=1; i<ile; i++)
    {
        cin >> tablica[i];
    }
    //wczytanie z klawiatury

    //sortowanie
    quicksort(tablica,0,ile-1);
    //sortowanie

    //wypisanie posortowanej zawartosci
    for(int i=1; i<=ile; i++)
    {
cout << i << ". " << tablica[i] << endl;
    }
    //wypisanie posortowanej zawartosci
}

Witam, to jest część mojego pomysłu na program sortujący z użyciem algorytmu quicksort. Problem w tym, że zamiast posortowanych liczb otrzymuje dziwne liczby których pochodzenia nie rozumiem. Oto przykładowe zrzuty ekranu:

 

 

 

Za wszystkie udzielone odpowiedzi z góry dziękuje.Pozdrawiamwink

1 odpowiedź

+2 głosów
odpowiedź 22 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)
wybrane 22 sierpnia 2016 przez Piotr Lis
 
Najlepsza

Tablice w C++ indeksuje się od 0.
Mając taką tablicę: tablica=new int [ile];
Oznacza to, że ma ona ile elementów od 0 do ile-1
Tak więc przy pętli: for(int i=1; i<ile; i++) cin >> tablica[i];
Pierwszy element tablicy (tablica[0]) nie zostanie zapełniony (znajdują się w nim "śmieciowe wartości").

komentarz 22 sierpnia 2016 przez Piotr Lis Obywatel (1,310 p.)

 

Poprawiłem pętle i nie pokazują się jak to trafnie nazwałeś "śmieciowe wartości" jednak nadal coś nie działa, ponieważ gdy na przykład wpisuje liczbę 5, to program pyta się o 6 liczb a wypisuje 4 frown. Już sam nie wiem o co z tym chodzi.

1
komentarz 22 sierpnia 2016 przez Piotr Lis Obywatel (1,310 p.)

Nieważne problem rozwiązany laugh. W fali euforii zmieniłem w pętli for pobierającej dane i<=ile co powodowało te błędyyes. Dziękuje za odpowiedź. Miłego dnia.laugh

Podobne pytania

0 głosów
1 odpowiedź 454 wizyt
pytanie zadane 25 listopada 2017 w C i C++ przez barti22062 Początkujący (370 p.)
+1 głos
1 odpowiedź 191 wizyt
pytanie zadane 27 czerwca 2020 w C i C++ przez Marcinuq Użytkownik (640 p.)
0 głosów
1 odpowiedź 488 wizyt
pytanie zadane 23 kwietnia 2020 w C i C++ przez Rrafał98 Nowicjusz (240 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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!

...