| Autor |
Nachricht |
b7f7
Mitglied
Benutzerprofil
Anmeldungsdatum: 09.04.2003
Beiträge: 538
|
b7f7 Mitglied
02:16:21 16.02.2006 Titel: |
|
Zitieren |
bei grössen daten ist es besser den median in dieser Art zu rechnen
damit commt man in logN zum Ziel
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | template <typename T>
struct divider
{
divider(const T&o):val(o){}
bool operator()(const T&o) {return o<val;}
T val;
};
template <typename T,typename RandItr>
RandItr median(RandItr begin, RandItr end)[cpp]
{
while(begin!=end)
{
divider<T> Pred((*(begin) + *(end-1))/2 );
RandItr pos=std::partition(begin,end,Pred);
size_t distB=std::distance(begin,pos);
size_t distE=std::distance(pos,end);
if(distB==0) return begin;
else if(distB<distE) begin=pos;
else end=pos;
}
return begin;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | template <typename T>
struct divider
{
divider(const T&o):val(o){}
bool operator()(const T&o) {return o<val;}
T val;
};
template <typename T,typename RandItr>
RandItr median(RandItr begin, RandItr end)[cpp]
{
while(begin!=end)
{
divider<T> Pred((*(begin) + *(end-1))/2 );
RandItr pos=std::partition(begin,end,Pred);
size_t distB=std::distance(begin,pos);
size_t distE=std::distance(pos,end);
if(distB==0) return begin;
else if(distB<distE) begin=pos;
else end=pos;
}
return begin;
}
| |
| C/C++ Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | template <typename T>
struct divider
{
divider(const T&o):val(o){}
bool operator()(const T&o) {return o<val;}
T val;
};
template <typename T,typename RandItr>
RandItr median(RandItr begin, RandItr end)[cpp]
{
while(begin!=end)
{
divider<T> Pred((*(begin) + *(end-1))/2 );
RandItr pos=std::partition(begin,end,Pred);
size_t distB=std::distance(begin,pos);
size_t distE=std::distance(pos,end);
if(distB==0) return begin;
else if(distB<distE) begin=pos;
else end=pos;
}
return begin;
}
| |
das hat sicher noch paar macken aber dafür is mir grad zu früh |
|
|
|
 |
kenner der linuxsxsteme
Unregistrierter
|
kenner der linuxsxsteme Unregistrierter
16:44:16 19.02.2006 Titel: |
|
Zitieren |
Wie führt man das unter linux aus?
g++ dateiname.cpp -o dateiname
./dateiname
funktioniert nicht,
Ausserdem würde es mich interessieren, was für ein datei ich jetzt als erstes aus deinem projekt compilern soll ... da sind nämlich mehr als eine .cpp datei |
|
|
|
 |
Korbinian
Moderator
Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 3115
|
Korbinian Moderator
17:43:25 19.02.2006 Titel: |
|
Zitieren |
@b7f7: keine schlechte idee beim median gleich beim einfügen zu sortieren, das spart sicher zeit!
@kenner: nuja was hast du denn alles runtergeladen? das von dir genannte prinzip sollte es eigentlich schon tun. bei dem beispielprojekt von mir war allerdings auch ein makefile dabei :) |
_________________ Frage an mich? korbinian at c-plusplus dot de
|
|
 |
kenner der linuxsxsteme
Unregistrierter
|
kenner der linuxsxsteme Unregistrierter
18:00:32 19.02.2006 Titel: |
|
Zitieren |
|
 |
Korbinian
Moderator
Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 3115
|
Korbinian Moderator
20:48:46 19.02.2006 Titel: |
|
Zitieren |
wenn du mehr über make wissen möchtest, empfehle ich dir ein make tutorial, leicht über google erhältlich (im linux forum hier gibts auch eins, glaub ich). generell kannst du mit einem schlichten 'make' alles bauen, die binaries findest du dann unter bin/ oder lib/ steht glaub ich auch in der readme drin. |
_________________ Frage an mich? korbinian at c-plusplus dot de
|
|
 |
zafiro
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.01.2006
Beiträge: 85
|
zafiro Mitglied
15:52:53 20.02.2006 Titel: |
|
Zitieren |
= make das Makefile
| Zitat: | | bin/test-rotation sample.pgm out.pgm |
= out.pgm is das bild was "raus kommt"
PS: natürlich musst du alles in die Konsole eingeben |
|
|
|
 |
zafiro
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.01.2006
Beiträge: 85
|
zafiro Mitglied
17:13:25 20.02.2006 Titel: |
|
Zitieren |
@Korbinian: kannst du mal bitte ein vernünftiges makefile erstellen? |
|
|
|
 |
Korbinian
Moderator
Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 3115
|
Korbinian Moderator
17:29:10 20.02.2006 Titel: |
|
Zitieren |
was passt dir an diesem nich? |
_________________ Frage an mich? korbinian at c-plusplus dot de
|
|
 |
zafiro
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.01.2006
Beiträge: 85
|
zafiro Mitglied
18:01:08 20.02.2006 Titel: |
|
Zitieren |
der konventionen ignorierte passte einem nicht
konventionon = benennung das targets, allgemein zuviel text, kein "start"-target, ignore von CPPFLAGS
Kannst das auch alles vergessen |
Zuletzt bearbeitet von zafiro am 18:02:51 20.02.2006, insgesamt 1-mal bearbeitet |
|
 |
Korbinian
Moderator
Benutzerprofil
Anmeldungsdatum: 19.02.2002
Beiträge: 3115
|
Korbinian Moderator
21:18:34 20.02.2006 Titel: |
|
Zitieren |
deine konventionen sind mir neu, ein start oder main mach ich nur, wenn es sich um ein programm handelt. das ist nur eine sammlung von klassen und funktionen, jemand der das benutzt sucht gezielt einzelne sachen. genauso die cppflags, drauf geschissen, ich will _meine_ compilierregeln für das projekt, nicht die standardmaessig eingestellten (auch hier wieder: es handelt sich nicht um ein auslieferbares programm/lib, sondern um ein spielzeug zum basteln).
aber es hindert dich niemand daran hier ein makefile reinzustellen. aber vielleicht schreibst du erst den datenbankartikel fertig... |
_________________ Frage an mich? korbinian at c-plusplus dot de
|
|
 |