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

Quick sort (szybkie wyszukiwanie)

Object Storage Arubacloud
0 głosów
285 wizyt
pytanie zadane 24 stycznia 2018 w C i C++ przez Elijah Romashchenko Nowicjusz (220 p.)
edycja 24 stycznia 2018 przez Elijah Romashchenko
Dzień dobry, dla Szybkiego wyszukiwania potrzebna parzysta ilość liczb? I jak w tedy kiedy jest nie parzysta ilość, dzielić na pół taką tablice?(jeżeli można z jakimś kodem przykładowym lub pseudo-kodem) Dziękuję z góry!
komentarz 24 stycznia 2018 przez 10kw10 Pasjonat (22,880 p.)
Raczej chodzilo ci o quick sort
komentarz 24 stycznia 2018 przez Elijah Romashchenko Nowicjusz (220 p.)
Dokładnie. Poprostu chciłem wykorzystać quick sort jako wyszukiwanie małych liczb i duzych liczb dla podanej tabeli (n) i pużniej już samym sort-em wyszukać i poruwnywać max pomiędzy małych - min pomiędzy dużych.
komentarz 24 stycznia 2018 przez 10kw10 Pasjonat (22,880 p.)
Sort = sortowac, skoro chcesz znalezc min i max z podanej tabeli to raczej nie potrzebny ci algorytm sortowania.
komentarz 24 stycznia 2018 przez Elijah Romashchenko Nowicjusz (220 p.)
Dobrze chyba trzeba cały problem wytłumaczyć. Mam tablicę n-elementową, muszę znaleźć punk podziału tej tablicy, i żeby min wartość tej podzielonej tabeli (punktem podziału) niech będzie po prawej stronie, równało się max wartości prawej pod-tablice. Czyli np. {1343 | 5864}. Punk podziału w tej tabeli jest 3(z indeksem k=3, liczymy od 0), Max lewej pod-tablicy = min prawej.

A co jeżeli będzie nie parzysta ilość  liczb.???

1 odpowiedź

0 głosów
odpowiedź 24 stycznia 2018 przez k222 Nałogowiec (30,150 p.)

Wyznaczając punkt podziału masz coś typu:


void QuickSort( int tab[], int left, int right )
{
    int i = left;
    int j = right;
    int x = tab[( left + right ) / 2 ];
...
}

skoro left i right są liczbami typu int to całe wyrażenie  (left + right ) / 2 zwróci int - co w przypadku dzielenia wiąże się po prostu z ucięciem tego co jest po przecinku - np. (1+8) / 2 = 4 , dlatego zawsze otrzymamy liczbę całkowitą i nie ma żadnego problemu z parzystością / nieparzystością liczby sortowanych zmiennych

komentarz 24 stycznia 2018 przez Elijah Romashchenko Nowicjusz (220 p.)
Aha, czyli można powiedzieć że komputer wprawie automatycznie dzieli tą tablicę?
komentarz 24 stycznia 2018 przez k222 Nałogowiec (30,150 p.)

Nie zrozumiałem twojego zdania, ale tu masz prosty programik który ilustruje jak to działa - możesz sobie powpisywać liczby dodatnie ujemne, ułamki i zobaczysz co ci wyjdzie:

#include <iostream>

using namespace std;

int main()
{
    double a,b;

    while(cin>>a>>b)
    cout<<a/b<<"     "<<(int)a/(int)b<<endl;


    return 0;
}

(jakby co to (int) jest rzutowaniem na int'a - czyli po prostu utnie to co jest po przecinku - np. (int)123.456 = 123), w pierwszym wyrażeniu masz dwa double więc wynik będzie typu double - z przecinkiem, w drugim masz dwa inty 

Podobne pytania

–3 głosów
2 odpowiedzi 392 wizyt
pytanie zadane 13 marca 2018 w C i C++ przez Damian918 Nowicjusz (160 p.)
0 głosów
0 odpowiedzi 194 wizyt
pytanie zadane 27 listopada 2017 w C i C++ przez barti22062 Początkujący (370 p.)
0 głosów
1 odpowiedź 515 wizyt
pytanie zadane 3 czerwca 2017 w C i C++ przez Wujek Początkujący (410 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

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

...