eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingminmax(a,b,c)Re: minmax(a,b,c)
  • Data: 2013-12-04 19:29:08
    Temat: Re: minmax(a,b,c)
    Od: firr <p...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu środa, 4 grudnia 2013 18:55:37 UTC+1 użytkownik bartekltg napisał:
    > W dniu 2013-12-04 18:36, firr pisze:
    >
    > > porzebuje kodu ktory dla zadanych trzech intow
    >
    > >
    >
    > > int a = 4; int b = 19; int c = 2; ....
    >
    > >
    >
    > > int min = ... int max = ...
    >
    > >
    >
    > > zwroci najmniejsza i najwieksza wartosc przy jak najmniejszej liczbie
    >
    > > porownan (tak zeby szybko dzialalo no jest odpalane w petli)
    >
    > >
    >
    > > int min = min(min(a,b),c); int max = max(max(a,b),c);
    >
    > >
    >
    >
    >
    > Przecież to proste.
    >
    >
    >
    > int m,M;
    >
    >
    >
    > if (a>b)
    >
    > {
    >
    > M=a;
    >
    > m=b;
    >
    > }
    >
    > else
    >
    > {
    >
    > M=b;
    >
    > m=a;
    >
    > }
    >
    >
    >
    > if (c>M)
    >
    > M=c;
    >
    > else if (c<m) m=c;
    >
    >
    >
    > > chyab nie jest optymalne, zreszta chyba wolalbym uniknac systemowych
    >
    > > min() i max() bo zawsze boje sie
    >
    > > ze sa wolne - nie wiem czy slusznie
    >
    >
    >
    > Niesłusznie. Są szybkie.
    >

    moze sa szybkie a moze nie sa - trzebaby chyba zawsze sprawdzac :c przy tym chyba
    szybsze od
    napisania tego ifem z reki nie są ? min to
    logicznie zupelnie inna instrukcja niz if
    (teoretycznie chyba powinna byc tańsza -
    czesto mowi sie ze branche sa drogie)

    dzis mnie glowa boli i nie moge sie skupic,
    co do tej wersji to chyba tak tyle ze napisalem
    wersje rozwinietą

    if(a<b)
    {
    if(a<c)
    {
    min = a;

    if(b<c)
    {
    max = c;
    }
    else
    {
    max = b;
    }
    }
    else //a > c & a<b
    {
    min = c;
    max = b;
    }
    }
    else //a>b
    {
    if(a>c)
    {
    max = a;

    if(b>c)
    {
    min = c;
    }
    else
    {
    min = b;
    }


    }
    else //a>b & a<c
    {
    min = b;
    max = c;
    }

    }

    ale ciagle nie wiem czy nie daloby sie moze
    tego jakos jeszcze podoptymalizowac, przepisywanie
    na asma by cos dalo?



    >
    >
    > Ale przy jednoczesnym wyznaczaniu min i max da się
    >
    > to zrobić szybciej, jeśli robi się jednocześnie.
    >
    > Tak jak powyżej, mamy maksymalnie 3 porównania, (średnio
    >
    > 2+2/3(?)) a wyznaczając osobno min i max mielibyśmy 4.
    >
    >
    >
    >
    >
    > W c++11 mamy funkcję minmax, zwracającą uporządkowaną parę
    >
    > oraz minmax_element, działający na kontenerze.
    >
    >
    >
    > Szukając naraz min i max w tablicy n elementów, wykonuje
    >
    > się 1.5n porównań, zamiast 2n.
    >
    >
    >
    > pzdr
    >
    > bartekltg

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: