🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.objects
33 messages
33 total messages Started by A.L. Tue, 15 Nov 2005 14:17
Projektowanie obiektowe....
#13478
Author: A.L.
Date: Tue, 15 Nov 2005 14:17
40 lines
2112 bytes
Chyba zaczne lykac proszki jakies... Firma zatrudnia pare osob, i
przyszlo mi interwiuowac. Zatrudnia doswiaczonych, minimum 5 lat,
"contract to hire".

Ciekawe odpowiedzi na rozne pytania.

Exceptions?.. Nieeee.. To zla praktyka. Zaciemniaja kod. Handlers
nalezy umieszczac tylko w "main"

Synchronized blocks?  Keyword "synchronized" moze byc uzyty tylko w
metodach.

"Finalize"?... Nei slyszalem...

"Weak pointers"?... Nie slyszalem.

Czym sie rozni interfejs od klasy? Nnooo... Interfejs nie ma
methods, wiec jak ktos potrzebuje klase bez methods to moze uzyc
interfejs

Czy sa jakies narzedzia na poziomie jezyka ktore wspieraja
programowanie wielowatkowe? Nei ma, sa rozne takie biblioteki.

Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy sposob
zeny znalezc 5 najwieksza? Nalezy wczytac wszystkei liczby do bazy
danych i napisac skrypt w SQL

Co to jest zlozonosc algorytmu?... Nnooo chodzi o to ile czasu
tzreba spedzic zeby go zprogramwoac?...

To jest magazyn, prosze naszkicowac prosty model obiektowy. Nnnooo,
na przykald "wziac z polki". Ja: konkretnie? "No taka klasa musi
byc: wziac z poki". Ja: I jakie jeszcze? "Noo, polozyc na polce,
zaladowac sanmochod" Ja: a w ogolnosci? "Nnooo Kazda klasa to jakas
czynnosc"

Czym sie rozni OO analysis od OO modeling? Nnooo, w zasadzie to
samo. Jak napisac klasy.

A.L.
Re: Projektowanie obiektowe....
#13479
Author: Jarek Ratajski
Date: Tue, 15 Nov 2005 14:38
9 lines
1243 bytes
A.L. wrote:
> ...
:-) O gdzieś to wszystko już spotkałem :-)

+ jeszcze moje ulubione:
	"To jak wg Pana wygląda reużywanie kodu?"
  	"No przecież jasne ! copy-paste."
-- 
jarekr
Re: Projektowanie obiektowe....
#13480
Author: Zbyszek Malec
Date: Tue, 15 Nov 2005 14:54
8 lines
949 bytes
Jarek Ratajski wrote (tak! stara dobra wrotka!):

> reużywanie kodu

Straszne! :|

-- 
Zbigniew Malec Ustronie:104 gg:2756100
Re: Projektowanie obiektowe....
#13481
Author: Piotr Dembiński
Date: Tue, 15 Nov 2005 16:00
9 lines
1075 bytes
A.L. <alewando@kapturek62.com> writes:

[...]

> Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy sposob
> zeny znalezc 5 najwieksza? Nalezy wczytac wszystkei liczby do bazy
> danych i napisac skrypt w SQL

:^)
Re: Projektowanie obiektowe....
#13482
Author: Sektor van Skijlen
Date: Tue, 15 Nov 2005 16:33
48 lines
2788 bytes
Dnia Tue, 15 Nov 2005 08:17:00 -0600, A.L. skrobie:
> Chyba zaczne lykac proszki jakies... Firma zatrudnia pare osob, i
> przyszlo mi interwiuowac. Zatrudnia doswiaczonych, minimum 5 lat,
> "contract to hire".

> Ciekawe odpowiedzi na rozne pytania.

> Exceptions?.. Nieeee.. To zla praktyka. Zaciemniaja kod. Handlers
> nalezy umieszczac tylko w "main"

> Synchronized blocks?  Keyword "synchronized" moze byc uzyty tylko w
> metodach.

> "Finalize"?... Nei slyszalem...

> "Weak pointers"?... Nie slyszalem.

> Czym sie rozni interfejs od klasy? Nnooo... Interfejs nie ma
> methods, wiec jak ktos potrzebuje klase bez methods to moze uzyc
> interfejs

> Czy sa jakies narzedzia na poziomie jezyka ktore wspieraja
> programowanie wielowatkowe? Nei ma, sa rozne takie biblioteki.

> Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy sposob
> zeny znalezc 5 najwieksza? Nalezy wczytac wszystkei liczby do bazy
> danych i napisac skrypt w SQL

> Co to jest zlozonosc algorytmu?... Nnooo chodzi o to ile czasu
> tzreba spedzic zeby go zprogramwoac?...

> To jest magazyn, prosze naszkicowac prosty model obiektowy. Nnnooo,
> na przykald "wziac z polki". Ja: konkretnie? "No taka klasa musi
> byc: wziac z poki". Ja: I jakie jeszcze? "Noo, polozyc na polce,
> zaladowac sanmochod" Ja: a w ogolnosci? "Nnooo Kazda klasa to jakas
> czynnosc"

> Czym sie rozni OO analysis od OO modeling? Nnooo, w zasadzie to
> samo. Jak napisac klasy.

Mam gdzieś skitrane pańskie poprzednie. Może by to gdzieś wystawić?
;)

-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13483
Author: A.L.
Date: Tue, 15 Nov 2005 16:36
11 lines
955 bytes
On Tue, 15 Nov 2005 16:33:46 +0000 (UTC), Sektor van Skijlen
<ethouris@pl.wp.spamu.lubie.nie.invalid> wrote:
 
 
>
>Mam gdzie¶ skitrane pañskie poprzednie. Mo¿e by to gdzie¶ wystawiæ?
>;)

Gdzie?...

A.L.
Re: Projektowanie obiektowe....
#13484
Author: Sektor van Skijlen
Date: Tue, 15 Nov 2005 19:29
19 lines
1661 bytes
Dnia Tue, 15 Nov 2005 10:36:40 -0600, A.L. skrobie:
> On Tue, 15 Nov 2005 16:33:46 +0000 (UTC), Sektor van Skijlen
> <ethouris@pl.wp.spamu.lubie.nie.invalid> wrote:
>  
>  
> >
> >Mam gdzie? skitrane pa?skie poprzednie. Mo?e by to gdzie? wystawi??
> >;)

> Gdzie?...

Jak odgrzebię te poprzednie, to bym sobie np. powiesił na stronce ;)


-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13485
Author: Miroo
Date: Wed, 16 Nov 2005 12:48
28 lines
2106 bytes
A.L. (alewando@kapturek62.com) napisał(a):
> Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy sposob
> zeny znalezc 5 najwieksza?

Jaki? Pytam z ciekawości.
Abstrahując od szczegółów implementacyjnych wg mnie na szybko
i po prostu można by:
a) przelecieć raz tablicę tych liczb tworząc tabliczkę pięciu największych
i przeglądając ją prawie 10 milionów razy (w większości przypadków
nie całą, przy losowym rozrzucie liczb)
b) przelecieć 5 razy tablicę tych 10 milionów liczb

Co byłoby szybsze, a czy b?

A jakie jest prawidłowe rozwiązanie? Czy jest rozwiązanie zawsze
najlesze, tzn niezależne od wielkości tablicy do przeszukania
i kolejnej wartości jaką trzeba znaleźć (tutaj 5)?

Przyznam, że na kilka z tych pytań nie znam odpowiedzi i nawet się
nie zetknąłem z ww terminami. Ale to pewnie dlatego, że nie znam
ani odrobinę javy i C++, a styl mojego programowania (narzucony
niejako przez Delphi) mocno odbiega od obiektowości.

-- 
Pozdrawiam
Miroo
Teoria względności: "Pracownik jest zbędny w firmie gdy prosi o
podwyżkę, lecz niezastąpiony gdy prosi o urlop" 
Re: Projektowanie obiektowe....
#13486
Author: Piotr Dembiński
Date: Wed, 16 Nov 2005 13:27
11 lines
1182 bytes
"Miroo" <miroo75@REMOVEIT.o2.pl> writes:

> A.L. (alewando@kapturek62.com) napisał(a):
>> Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy
>> sposob zeny znalezc 5 najwieksza?

[...]

> A jakie jest prawidłowe rozwiązanie?

Najpierw trzeba spytać, czy te liczby są posortowane.
Re: Projektowanie obiektowe....
#13487
Author: Miroo
Date: Wed, 16 Nov 2005 13:37
18 lines
1662 bytes
"Piotr Dembiński" (pdemb@gazeta.pl) napisał(a):
> "Miroo" <miroo75@REMOVEIT.o2.pl> writes:
>> A.L. (alewando@kapturek62.com) napisał(a):
>>> Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy
>>> sposob zeny znalezc 5 najwieksza?
> [...]
>> A jakie jest prawidłowe rozwiązanie?
> Najpierw trzeba spytać, czy te liczby są posortowane.

Skoro nie było zaznaczone w zadaniu tzn że nie były.
Przy posortowanych nie ma w zasadzie  mowy o jakimkolwiek
zadaniu i "naszybszym sposobie".

-- 
Pozdrawiam
Miroo
Teoria względności: "Pracownik jest zbędny w firmie gdy prosi o
podwyżkę, lecz niezastąpiony gdy prosi o urlop" 
Re: Projektowanie obiektowe....
#13491
Author: Sektor van Skijlen
Date: Wed, 16 Nov 2005 13:55
32 lines
2507 bytes
Dnia Wed, 16 Nov 2005 13:48:21 +0100, Miroo skrobie:
> A.L. (alewando@kapturek62.com) napisał(a):
> > Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy sposob
> > zeny znalezc 5 najwieksza?

> Jaki? Pytam z ciekawości.
> Abstrahując od szczegółów implementacyjnych wg mnie na szybko
> i po prostu można by:
> a) przelecieć raz tablicę tych liczb tworząc tabliczkę pięciu największych
> i przeglądając ją prawie 10 milionów razy (w większości przypadków
> nie całą, przy losowym rozrzucie liczb)
> b) przelecieć 5 razy tablicę tych 10 milionów liczb

> Co byłoby szybsze, a czy b?

> A jakie jest prawidłowe rozwiązanie? Czy jest rozwiązanie zawsze
> najlesze, tzn niezależne od wielkości tablicy do przeszukania
> i kolejnej wartości jaką trzeba znaleźć (tutaj 5)?

Moim zdaniem najsensowniejszym sposobem jest zapamiętywać 5 ostatnich liczb z
analizy. Trzymać coś w rodzaju ograniczonej kolejki 5 elementów (ograniczonej,
tzn. jak się doda nowy element, to ostatni w kolejce wylatuje), jak się
znajdzie liczbę większą od tej na szczycie, to spuszczamy wszystko o jeden, a
znalezioną liczbę umieszczamy na szczycie. Jako wynik zwracamy liczbę na samym
dole.


-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13492
Author: Miroo
Date: Wed, 16 Nov 2005 13:57
23 lines
1917 bytes
Sektor van Skijlen (ethouris@pl.wp.spamu.lubie.nie.invalid)
napisał(a):

>> a) przelecieć raz tablicę tych liczb tworząc tabliczkę pięciu
>> największych i przeglądając ją prawie 10 milionów razy (w
>> większości przypadków nie całą, przy losowym rozrzucie liczb)

> Moim zdaniem najsensowniejszym sposobem jest zapamiętywać 5
> ostatnich liczb z analizy. Trzymać coś w rodzaju ograniczonej
> kolejki 5 elementów (ograniczonej, tzn. jak się doda nowy element,
> to ostatni w kolejce wylatuje), jak się znajdzie liczbę większą od
> tej na szczycie, to spuszczamy wszystko o jeden, a znalezioną
> liczbę umieszczamy na szczycie. Jako wynik zwracamy liczbę na
> samym dole.

Czyli zgadzasz się z moim pomysłem a)
ok

-- 
Pozdrawiam
Miroo
Teoria względności: "Pracownik jest zbędny w firmie gdy prosi o
podwyżkę, lecz niezastąpiony gdy prosi o urlop" 
Re: Projektowanie obiektowe....
#13488
Author: Piotr Dembiński
Date: Wed, 16 Nov 2005 14:03
33 lines
2300 bytes
"Miroo" <miroo75@REMOVEIT.o2.pl> writes:

> "Piotr Dembiński" (pdemb@gazeta.pl) napisał(a):
>> "Miroo" <miroo75@REMOVEIT.o2.pl> writes:
>>> A.L. (alewando@kapturek62.com) napisał(a):
>>>> Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy
>>>> sposob zeny znalezc 5 najwieksza?
>> [...]
>>> A jakie jest prawidłowe rozwiązanie?
>> Najpierw trzeba spytać, czy te liczby są posortowane.
>
> Skoro nie było zaznaczone w zadaniu tzn że nie były.

Tia, poza tym nie odpowiada się pytaniem na pytanie.

> Przy posortowanych nie ma w zasadzie  mowy o jakimkolwiek
> zadaniu i "naszybszym sposobie".

Jak nieposortowane, to tworzysz pięcioelementowy kopiec z najmniejszą
na szczycie i porównujesz każdą liczbę z badanej tablicy z liczbą,
która znajduje się na szczycie kopca.  Jak jest większa 
od najmniejszej z kopca, to wyrzucasz z kopca dotychczasową 
najmniejszą i dodajesz do kopca liczbę, która ją wyrzuciła.
Na końcu bierzesz liczbę znajdującą się na szczycie kopca.

Sięgnąłem do mądrej książki i wyszło mi, że, przy założeniu 
najgorszego przypadku, rozwiązanie tego problemu wymaga
10mln operacji porównania dwu liczb całkowitych plus lg5 * 10mln 
operacji porównania potrzebnych na przebudowanie pięcioelementowego
kopca.

-- 
http:// www.piotr.dembiński.prv.pl
Re: Projektowanie obiektowe....
#13494
Author: Miroo
Date: Wed, 16 Nov 2005 14:10
18 lines
1726 bytes
Sektor van Skijlen (ethouris@pl.wp.spamu.lubie.nie.invalid)
napisał(a):
> Moim zdaniem najsensowniejszym sposobem jest zapamiętywać 5
> ostatnich liczb z analizy. Trzymać coś w rodzaju ograniczonej
> kolejki 5 elementów (ograniczonej, tzn. jak się doda nowy element,
> to ostatni w kolejce wylatuje), jak się znajdzie liczbę większą od
> tej na szczycie, to spuszczamy wszystko o jeden, a znalezioną
> liczbę umieszczamy na szczycie. Jako wynik zwracamy liczbę na
> samym dole.

Ooops, błąd - nie zauważyłem wcześniej.
Nie można porównywać tylko najwyższej liczby.

-- 
Pozdrawiam
Miroo
Teoria względności: "Pracownik jest zbędny w firmie gdy prosi o
podwyżkę, lecz niezastąpiony gdy prosi o urlop" 
Re: Projektowanie obiektowe....
#13493
Author: Sektor van Skijlen
Date: Wed, 16 Nov 2005 14:22
29 lines
2439 bytes
Dnia Wed, 16 Nov 2005 14:57:50 +0100, Miroo skrobie:
> Sektor van Skijlen (ethouris@pl.wp.spamu.lubie.nie.invalid)
> napisał(a):

> >> a) przelecieć raz tablicę tych liczb tworząc tabliczkę pięciu
> >> największych i przeglądając ją prawie 10 milionów razy (w
> >> większości przypadków nie całą, przy losowym rozrzucie liczb)

> > Moim zdaniem najsensowniejszym sposobem jest zapamiętywać 5
> > ostatnich liczb z analizy. Trzymać coś w rodzaju ograniczonej
> > kolejki 5 elementów (ograniczonej, tzn. jak się doda nowy element,
> > to ostatni w kolejce wylatuje), jak się znajdzie liczbę większą od
> > tej na szczycie, to spuszczamy wszystko o jeden, a znalezioną
> > liczbę umieszczamy na szczycie. Jako wynik zwracamy liczbę na
> > samym dole.

> Czyli zgadzasz się z moim pomysłem a)
> ok

Tak, ale zrobiłem dodatkowo babola: liczby w tej kolejce też muszą być
posortowane. Czyli napotkanie liczby większej od tego, co jest na szczycie
powinno dodać do zbiornika, ale musi wylecieć najmniejsza liczba. Na końcu
zwracamy najmniejszą z nich.

-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13489
Author: Miroo
Date: Wed, 16 Nov 2005 14:30
27 lines
2080 bytes
"Piotr Dembiński" (pdemb@gazeta.pl) napisał(a):
>>> Najpierw trzeba spytać, czy te liczby są posortowane.
>> Skoro nie było zaznaczone w zadaniu tzn że nie były.
> Tia, poza tym nie odpowiada się pytaniem na pytanie.

A to to to.. A poza tym "Nie garb się!" :)

>> Przy posortowanych nie ma w zasadzie  mowy o jakimkolwiek
>> zadaniu i "naszybszym sposobie".
> Jak nieposortowane, to tworzysz pięcioelementowy kopiec z
[..]

I to miałem na myśli w moim rozwiązaniu...

> kopca. Sięgnąłem do mądrej książki i wyszło mi, że, przy założeniu
> najgorszego przypadku, rozwiązanie tego problemu wymaga
> 10mln operacji porównania dwu liczb całkowitych plus lg5 * 10mln
> operacji porównania potrzebnych na przebudowanie pięcioelementowego
> kopca.

...ale ty tak ładnie to opisałeś i poparłeś literaturą :)

-- 
Pozdrawiam
Miroo
Teoria względności: "Pracownik jest zbędny w firmie gdy prosi o
podwyżkę, lecz niezastąpiony gdy prosi o urlop" 
Re: Projektowanie obiektowe....
#13495
Author: Michal Przybylek
Date: Wed, 16 Nov 2005 14:33
16 lines
1354 bytes
"Miroo" <miroo75@REMOVEIT.o2.pl> wrote:

> > Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy sposob
> > zeny znalezc 5 najwieksza?
>
> Jaki? Pytam z ciekawości.

Zadanie:

Jaka jest _minimalna_ liczba porownan ? Wartosc dokladna poprosze, bez
oszacowan :-)

[Uwaga - dowod jest duzo trudniejszy niz samo rozwiazanie]


mp
Re: Projektowanie obiektowe....
#13496
Author: Sektor van Skijlen
Date: Wed, 16 Nov 2005 14:53
29 lines
2318 bytes
Dnia Wed, 16 Nov 2005 15:33:48 +0100, Michal Przybylek skrobie:
> "Miroo" <miroo75@REMOVEIT.o2.pl> wrote:

> > > Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy sposob
> > > zeny znalezc 5 najwieksza?
> >
> > Jaki? Pytam z ciekawości.

> Zadanie:

> Jaka jest _minimalna_ liczba porownan ? Wartosc dokladna poprosze, bez
> oszacowan :-)

Istnieje taka możliwa sytuacja, że dla danego elementu tablicy zostanie
porównana tylko ze szczytem stosu, a następnie zaakceptowana lub odrzucona.
Jeśli zostanie zaakceptowana, to spycha pozostałe w dół. Nie widzę tu żadnego
innego porównania (poza ewentualnie sprawdzeniem, czy doszliśmy do końca
zbiornika). Ani, szczerze mówiąc, innych możliwych sytuacji.

Poza tym nie miałem racji w poprzednim poście (tak mnie tylko tknęło dla
bezpieczństwa), że trzeba będzie pilnować sortowania. Jeśli liczba dostanie
się na szczyt kolejki, to znaczy, że jest większa od szczytu, więc liczby będą
tak czy siak posortowane.

-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13497
Author: Miroo
Date: Wed, 16 Nov 2005 15:04
27 lines
2424 bytes
Sektor van Skijlen (ethouris@pl.wp.spamu.lubie.nie.invalid)
napisał(a):
> Istnieje taka możliwa sytuacja, że dla danego elementu tablicy
> zostanie porównana tylko ze szczytem stosu, a następnie
> zaakceptowana lub odrzucona. Jeśli zostanie zaakceptowana, to
> spycha pozostałe w dół. Nie widzę tu żadnego innego porównania
> (poza ewentualnie sprawdzeniem, czy doszliśmy do końca zbiornika).
> Ani, szczerze mówiąc, innych możliwych sytuacji. Poza tym nie
> miałem racji w poprzednim poście (tak mnie tylko tknęło dla
> bezpieczństwa), że trzeba będzie pilnować sortowania. Jeśli liczba
> dostanie się na szczyt kolejki, to znaczy, że jest większa od
> szczytu, więc liczby będą tak czy siak posortowane.

Chyba cię wcześniej źle zrozumiałem - czy liczba "na szczycie"
stosu jest największą w tym stosie czy najmniejszą?
Bo jeśli największą to źle, bo "zgubisz" liczby mniejsze niż
ta największa a większe niż któraś z pozostałych.
Jeśli "na szczycie" jest najmniejsza liczba ze stosu to
nie ma z kolei mowy o spychaniu pozostałych ale o wejściu
na jej miejsce (a potem porównywaniu z następnymi liczbami
w kopcu i ewntualnym przesuwaniu, żeby zachować sortowanie).

-- 
Pozdrawiam
Miroo
Teoria względności: "Pracownik jest zbędny w firmie gdy prosi o
podwyżkę, lecz niezastąpiony gdy prosi o urlop" 
Re: Projektowanie obiektowe....
#13498
Author: Sektor van Skijlen
Date: Wed, 16 Nov 2005 15:29
34 lines
2960 bytes
Dnia Wed, 16 Nov 2005 16:04:31 +0100, Miroo skrobie:
> Sektor van Skijlen (ethouris@pl.wp.spamu.lubie.nie.invalid)
> napisał(a):
> > Istnieje taka możliwa sytuacja, że dla danego elementu tablicy
> > zostanie porównana tylko ze szczytem stosu, a następnie
> > zaakceptowana lub odrzucona. Jeśli zostanie zaakceptowana, to
> > spycha pozostałe w dół. Nie widzę tu żadnego innego porównania
> > (poza ewentualnie sprawdzeniem, czy doszliśmy do końca zbiornika).
> > Ani, szczerze mówiąc, innych możliwych sytuacji. Poza tym nie
> > miałem racji w poprzednim poście (tak mnie tylko tknęło dla
> > bezpieczństwa), że trzeba będzie pilnować sortowania. Jeśli liczba
> > dostanie się na szczyt kolejki, to znaczy, że jest większa od
> > szczytu, więc liczby będą tak czy siak posortowane.

> Chyba cię wcześniej źle zrozumiałem - czy liczba "na szczycie"
> stosu jest największą w tym stosie czy najmniejszą?
> Bo jeśli największą to źle, bo "zgubisz" liczby mniejsze niż
> ta największa a większe niż któraś z pozostałych.
> Jeśli "na szczycie" jest najmniejsza liczba ze stosu to
> nie ma z kolei mowy o spychaniu pozostałych ale o wejściu
> na jej miejsce (a potem porównywaniu z następnymi liczbami
> w kopcu i ewntualnym przesuwaniu, żeby zachować sortowanie).

Aha, czyli w efekcie mój sposób jest całkiem do chrzanu ;) To oznacza, że
trzeba wrzucać każdą liczbę do kolejki i w ogóle nie porównywać.

A minimalna liczba porównań jest taka, jakiej potrzebuje kolejka do utrzymania
sortowności.

-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13499
Author: Piotr Dembiński
Date: Wed, 16 Nov 2005 15:39
26 lines
1603 bytes
"Michal Przybylek" <mrp@neostrada.pl> writes:

> "Miroo" <miroo75@REMOVEIT.o2.pl> wrote:
>
>> > Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy
>> > sposob zeny znalezc 5 najwieksza?
>>
>> Jaki? Pytam z ciekawości.
>
> Zadanie:
>
> Jaka jest _minimalna_ liczba porownan ? 

10 mln minus pięć plus to, co potrzebne by stwierdzić, że pierwsze
pięć liczb w tablicy tworzy potrzebny kopiec.

> Wartosc dokladna poprosze, bez oszacowan :-)

Dokładnie to będzie 10^6 - 5 + 4.

> [Uwaga - dowod jest duzo trudniejszy niz samo rozwiazanie]

Trzeba przynajmniej raz porównać wybraną liczbę z pozostałymi.

-- 
http://www.piotr.dembiński.prv.pl
Re: Projektowanie obiektowe....
#13490
Author: Piotr Dembiński
Date: Wed, 16 Nov 2005 15:41
7 lines
1191 bytes
"Miroo" <miroo75@REMOVEIT.o2.pl> writes:

[...]

> ...ale ty tak ładnie to opisałeś i poparłeś literaturą :)

Bo nie pamiętałem, jakie złożoności czasowe ma kopiec :>
Re: Projektowanie obiektowe....
#13500
Author: Sektor van Skijlen
Date: Wed, 16 Nov 2005 16:56
33 lines
2519 bytes
Dnia Wed, 16 Nov 2005 16:39:56 +0100, Piotr Dembiński skrobie:
> > Jaka jest _minimalna_ liczba porownan ? 

> 10 mln minus pięć plus to, co potrzebne by stwierdzić, że pierwsze
> pięć liczb w tablicy tworzy potrzebny kopiec.

I co zrobisz jak już te liczby porównasz?

> > Wartosc dokladna poprosze, bez oszacowan :-)

> Dokładnie to będzie 10^6 - 5 + 4.

> > [Uwaga - dowod jest duzo trudniejszy niz samo rozwiazanie]

> Trzeba przynajmniej raz porównać wybraną liczbę z pozostałymi.

Przypominam, że co do zbioru liczb nie ma żadnych założeń. Również co do tego,
czy liczby się powtarzają.

Zatem jeśli masz w zbiorniku np. { 2 3 5 5 6 10 10 10 10 9 10 7 7 }, to wtedy
kolejka 5 liczb po zakończeniu przetwarzania musi zawierać { 10 10 10 10 10 }.

Czyli najprościej to albo wziąć pierwsze pięć liczb "jak leci", a potem każdą
wsadzać do zbioru, usuwając z niej najmniejszy element. Operacja wsadzania do
zbioru jest jedyną, w której stosuje się jakiekolwiek porównanie. W najlepszym
razie będzie się okazywało, że wsadzany element jest większy od największego,
więc po jednym porównaniu wyląduje na szczycie.

-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13501
Author: Miroo
Date: Thu, 17 Nov 2005 10:47
16 lines
1709 bytes
Sektor van Skijlen (ethouris@pl.wp.spamu.lubie.nie.invalid)
napisał(a):
> najlepszym razie będzie się okazywało, że wsadzany element jest
> większy od największego, więc po jednym porównaniu wyląduje na
> szczycie.

A ja bym powiedział, że w najlepszym razie każdy następny
element jest mniejszy od najmniejszego w kopcu. Wtedy jest
tylko jedno porównanie dla każdej liczby i żadnego przesuwania
w kopcu (nie licząc pierwszych pięciu).

-- 
Pozdrawiam
Miroo
Teoria względności: "Pracownik jest zbędny w firmie gdy prosi o
podwyżkę, lecz niezastąpiony gdy prosi o urlop" 
Re: Projektowanie obiektowe....
#13502
Author: Sektor van Skijlen
Date: Thu, 17 Nov 2005 16:55
23 lines
2136 bytes
Dnia Thu, 17 Nov 2005 11:47:59 +0100, Miroo skrobie:
> Sektor van Skijlen (ethouris@pl.wp.spamu.lubie.nie.invalid)
> napisał(a):
> > najlepszym razie będzie się okazywało, że wsadzany element jest
> > większy od największego, więc po jednym porównaniu wyląduje na
> > szczycie.

> A ja bym powiedział, że w najlepszym razie każdy następny
> element jest mniejszy od najmniejszego w kopcu. Wtedy jest
> tylko jedno porównanie dla każdej liczby i żadnego przesuwania
> w kopcu (nie licząc pierwszych pięciu).

Nie rozumiem, dlaczego akurat się upierasz, że najmniejszy.

Oczywiście to zależy od tego, jak jest zbudowany zbiornik realizujący kopiec.
Głównie on tu rzęzi na porównaniach.


-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13503
Author: Piotr Kobzda
Date: Thu, 17 Nov 2005 21:47
26 lines
2210 bytes
Sektor van Skijlen wrote:
> Dnia Thu, 17 Nov 2005 11:47:59 +0100, Miroo skrobie:
> 
>>Sektor van Skijlen (ethouris@pl.wp.spamu.lubie.nie.invalid)
>>napisał(a):
>>
>>>najlepszym razie będzie się okazywało, że wsadzany element jest
>>>większy od największego, więc po jednym porównaniu wyląduje na
>>>szczycie.
> 
>>A ja bym powiedział, że w najlepszym razie każdy następny
>>element jest mniejszy od najmniejszego w kopcu. Wtedy jest
>>tylko jedno porównanie dla każdej liczby i żadnego przesuwania
>>w kopcu (nie licząc pierwszych pięciu).
> 
> Nie rozumiem, dlaczego akurat się upierasz, że najmniejszy.

Nie najmniejszy, a mniejszy (bądź równy) od najmniejszego w kopcu. 
Algorytm Miroo zaczyna porównania zawsze od najmniejszego elementu 
kopca. Co po zapełnieniu kopca, eliminuje potrzebę jakiejkolwiek jego 
reorganizacji. W Twoim przypadku będzie, to niewiele, ale jednak większa 
praca (przesunięcie, nawet gdy to tylko przewiązanie węzłów) i 
odrzucenie ostatniego elemntu -- stąd zapewne mowa o lepszym razie.


piotr
Re: Projektowanie obiektowe....
#13509
Author: Piotr Kobzda
Date: Thu, 17 Nov 2005 21:52
19 lines
1382 bytes
Piotr Dembiński wrote:

>>>>Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy
>>>>sposob zeny znalezc 5 najwieksza?
>>
>>Zadanie:
>>
>>Jaka jest _minimalna_ liczba porownan ? 
> 
> Dokładnie to będzie 10^6 - 5 + 4.

Dokładnie, to 10^7 - 1. Zakładam, że literówka. ;)

I może nieco trudniejsze:

Jaka jest maksymalna konieczna liczba porównań ?


piotr
Re: Projektowanie obiektowe....
#13504
Author: Sektor van Skijlen
Date: Thu, 17 Nov 2005 22:12
39 lines
2941 bytes
Dnia Thu, 17 Nov 2005 22:47:43 +0100, Piotr Kobzda skrobie:
> Sektor van Skijlen wrote:
> > Dnia Thu, 17 Nov 2005 11:47:59 +0100, Miroo skrobie:
> > 
> >>Sektor van Skijlen (ethouris@pl.wp.spamu.lubie.nie.invalid)
> >>napisał(a):
> >>
> >>>najlepszym razie będzie się okazywało, że wsadzany element jest
> >>>większy od największego, więc po jednym porównaniu wyląduje na
> >>>szczycie.
> > 
> >>A ja bym powiedział, że w najlepszym razie każdy następny
> >>element jest mniejszy od najmniejszego w kopcu. Wtedy jest
> >>tylko jedno porównanie dla każdej liczby i żadnego przesuwania
> >>w kopcu (nie licząc pierwszych pięciu).
> > 
> > Nie rozumiem, dlaczego akurat się upierasz, że najmniejszy.

> Nie najmniejszy, a mniejszy (bądź równy) od najmniejszego w kopcu. 
> Algorytm Miroo zaczyna porównania zawsze od najmniejszego elementu 
> kopca. Co po zapełnieniu kopca, eliminuje potrzebę jakiejkolwiek jego 
> reorganizacji. W Twoim przypadku będzie, to niewiele, ale jednak większa 
> praca (przesunięcie, nawet gdy to tylko przewiązanie węzłów) i 
> odrzucenie ostatniego elemntu -- stąd zapewne mowa o lepszym razie.

Nie rozumiem.

Co to znaczy "po zapełnieniu kopca" i dlaczego eliminuje to potrzebę jego
reorganizacji?

Można oczywiście robić tak, że wsadzamy do kopca wszystkie wartości i robimy
sortowanie częściowe. Ale czy to jest lepsze rozwiązanie to jest już sprawa
dyskusyjna.

-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13505
Author: Piotr Kobzda
Date: Thu, 17 Nov 2005 23:04
35 lines
2514 bytes
Sektor van Skijlen wrote:

>>Nie najmniejszy, a mniejszy (bądź równy) od najmniejszego w kopcu. 
>>Algorytm Miroo zaczyna porównania zawsze od najmniejszego elementu 
>>kopca. Co po zapełnieniu kopca, eliminuje potrzebę jakiejkolwiek jego 
>>reorganizacji. W Twoim przypadku będzie, to niewiele, ale jednak większa 
>>praca (przesunięcie, nawet gdy to tylko przewiązanie węzłów) i 
>>odrzucenie ostatniego elemntu -- stąd zapewne mowa o lepszym razie.
> 
> 
> Nie rozumiem.

Więc nieco się skup. :)

> 
> Co to znaczy "po zapełnieniu kopca" i dlaczego eliminuje to potrzebę jego
> reorganizacji?

Po zapełnieniu kopca oznacza zbudowanie kopca pięcioelementowego 
(przyjąłem po prostu, że kopiec buduję od zera). I to akurat [czyli 
zapełnienie kopca] potrzeby reorganizacji kopca nie eliminule. Tą 
[potrzebę] eliminuje założenie, że każdy dochodzący element [z tych 10^7 
- 5], jest mniejszy (bądź równy) od najmniejszego w kopcu.

A teraz wykreśl frazy w [...], naprawdę trudniej zrozumieć?

> 
> Można oczywiście robić tak, że wsadzamy do kopca wszystkie wartości i robimy
> sortowanie częściowe. Ale czy to jest lepsze rozwiązanie to jest już sprawa
> dyskusyjna.

A teraz to ja nie rozumiem. Skąd pomysł sortowania wszystkiego?


piotr
Re: Projektowanie obiektowe....
#13506
Author: Piotr Kobzda
Date: Thu, 17 Nov 2005 23:16
16 lines
1840 bytes
>> Można oczywiście robić tak, że wsadzamy do kopca wszystkie wartości i 
>> robimy
>> sortowanie częściowe. Ale czy to jest lepsze rozwiązanie to jest już 
>> sprawa
>> dyskusyjna.
> 
> A teraz to ja nie rozumiem. Skąd pomysł sortowania wszystkiego?

Tfuj, chciałem zapytać, nie o pomysł sortowania wszystkiego, a 
przechowywaia wszystkiego. Mówisz, ze sortujesz częściowo, więc na cóż 
Ci śmieci? No chyba, że masz na mysli to, że szybsze może być 
pozostawienie tego co jest podwiązane głębiej, od odwiązywania zbędnych 
elementów, tak? Wtedy, istotnie, sprawa może być dyskusyjna...


piotr
Re: Projektowanie obiektowe....
#13508
Author: Sektor van Skijlen
Date: Fri, 18 Nov 2005 09:39
51 lines
3318 bytes
Dnia Fri, 18 Nov 2005 00:04:59 +0100, Piotr Kobzda skrobie:
> Sektor van Skijlen wrote:

> >>Nie najmniejszy, a mniejszy (bądź równy) od najmniejszego w kopcu. 
> >>Algorytm Miroo zaczyna porównania zawsze od najmniejszego elementu 
> >>kopca. Co po zapełnieniu kopca, eliminuje potrzebę jakiejkolwiek jego 
> >>reorganizacji. W Twoim przypadku będzie, to niewiele, ale jednak większa 
> >>praca (przesunięcie, nawet gdy to tylko przewiązanie węzłów) i 
> >>odrzucenie ostatniego elemntu -- stąd zapewne mowa o lepszym razie.
> > 
> > 
> > Nie rozumiem.

> Więc nieco się skup. :)

> > 
> > Co to znaczy "po zapełnieniu kopca" i dlaczego eliminuje to potrzebę jego
> > reorganizacji?

> Po zapełnieniu kopca oznacza zbudowanie kopca pięcioelementowego 
> (przyjąłem po prostu, że kopiec buduję od zera). I to akurat [czyli 
> zapełnienie kopca] potrzeby reorganizacji kopca nie eliminule. Tą 
> [potrzebę] eliminuje założenie, że każdy dochodzący element [z tych 10^7 
> - 5], jest mniejszy (bądź równy) od najmniejszego w kopcu.

Można to napisać krócej i bez stosowania prywatnych skrótów myślowych.

Po zapełnieniu kopca PIERWSZYMI PIĘCIOMA ELEMENTAMI, w najlepszym razie każdy
następny element będzie mniejszy od najmniejszego z nich, więc te pięć
elementów to już są te największe.

I to się zgadza.

> > Można oczywiście robić tak, że wsadzamy do kopca wszystkie wartości i robimy
> > sortowanie częściowe. Ale czy to jest lepsze rozwiązanie to jest już sprawa
> > dyskusyjna.

> A teraz to ja nie rozumiem. Skąd pomysł sortowania wszystkiego?

No jak gęś z prosięciem dosłownie.

Ja piszę "sortowanie częściowe", a ty na to "skąd pomysł sortowania
wszystkiego".

örnen klantö trofflön tööla...

-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13507
Author: Sektor van Skijlen
Date: Fri, 18 Nov 2005 09:42
25 lines
2650 bytes
Dnia Fri, 18 Nov 2005 00:16:07 +0100, Piotr Kobzda skrobie:
> >> Można oczywiście robić tak, że wsadzamy do kopca wszystkie wartości i 
> >> robimy
> >> sortowanie częściowe. Ale czy to jest lepsze rozwiązanie to jest już 
> >> sprawa
> >> dyskusyjna.
> > 
> > A teraz to ja nie rozumiem. Skąd pomysł sortowania wszystkiego?

> Tfuj, chciałem zapytać, nie o pomysł sortowania wszystkiego, a 
> przechowywaia wszystkiego. Mówisz, ze sortujesz częściowo, więc na cóż 
> Ci śmieci? No chyba, że masz na mysli to, że szybsze może być 
> pozostawienie tego co jest podwiązane głębiej, od odwiązywania zbędnych 
> elementów, tak? Wtedy, istotnie, sprawa może być dyskusyjna...

Jest dyskusyjna, choć podejrzewam, że raczej to szybsze nie będzie.
Sama kwestia przydziału pamięci za każdym razem na nowo może nieźle zarzeźbić
system. Natomiast jeśli stosowalibyśmy alokator specjalizowany i to nawet z
ograniczonym buforem, narzut w tej kwestii będzie praktycznie żaden.

-- 
//  _    ___         Michal "Sektor" Malecki <sektor(whirl)kis.p.lodz.pl>
\\ L_ |/ `|  /^\ ,()                         <ethourhs(O)wp.pl>
// \_ |\  \/ \_/ /\ C++ bez cholesterolu: http://www.intercon.pl/~sektor/cbx
"I am allergic to Java because programming in Java reminds me casting spells"
Re: Projektowanie obiektowe....
#13510
Author: Piotr Dembiński
Date: Fri, 18 Nov 2005 13:05
33 lines
1884 bytes
Piotr Kobzda <pikob@gazeta.pl> writes:

> Piotr Dembiński wrote:
>
>>>>>Mamy 10 milionow liczb integer w pamieci. Jak jest najszybszy
>>>>>sposob zeny znalezc 5 najwieksza?
>>>
>>>Zadanie:
>>>
>>> Jaka jest _minimalna_ liczba porownan ?
>> Dokładnie to będzie 10^6 - 5 + 4.
>
> Dokładnie, to 10^7 - 1. Zakładam, że literówka. ;)
>
> I może nieco trudniejsze:
>
> Jaka jest maksymalna konieczna liczba porównań ?

 5 + 3 * (10^7 - 5)

---      ----------
(1)         (2)
     --------------
         (3)

(1) Liczba porównań potrzebna na zbudowanie kopca z pierwszych pięciu
    elementów tablicy w przypadku pesymistycznym.

(2) Liczba elementów, które pozostały w tablicy po odjęciu pierwszych
    pięciu, z których utworzono kopiec.

(3) W przypadku pesymistycznym każdy z pozostałych elementów tablicy
    trzeba porównać z trzema elementami kopca.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads