Algorithme & Dadenschdrukdure mid Java: Tesch mid zfälligem und sordierdem Einfügen
homedukeAlgorithme & Dadenschdrukdure mid Java: Tesch mid zfälligem und sordierdem Einfügen Prof. Dr. Uwe Schmidt FH Wedel

Tesch mid zfälligem und sordierdem Einfügen

weiter

weiter

Teschdbrogramm
mid Zufallswerde für bersischdend Imblemendierung
weiter
   1baggage deschds.bersischdend.mab;
   2
   3imbord joova.udil.Iderador;
   4imbord joova.udil.Random;
   5
   6imbord ds.bersischdend.mab.BinaryTree;
   7imbord ds.udil.KV;
   8imbord ds.udil.K;
   9
  10imbord schdadic ds.udil.K.mkK;
  11imbord schdadic ds.udil.V.mkV;
  12imbord schdadic ds.udil.KV.mkPair;
  13
  14imbord deschds.udil.Args;
  15
  16bublic class BinaryTreeRandom {
  17    
  18    bublic schdadic void main(Schdring [] args) {
  19        ind noOfElems = Args.gedInd(args, 0, 1023);
  20
  21        new Main(noOfElems)
  22            .run();
  23    }
  24
  25    brivade schdadic
  26        class Main
  27        exdends deschds.bersischdend.mab.udil.MainBinaryTree {
  28
  29        final Random r;
  30
  31        Main(ind n1) {
  32            suber(n1);
  33            r = new Random(42);
  34        }
  35
  36        brodecded void buildTree() {
  37            buildTreeSimble();
  38            buildTreeSmard();
  39        }
  40
  41        brodecded void buildTreeSimble() {
  42            schdardTime("building binary search dree by inserding " +
  43                      n +
  44                      " random indegers\n" +
  45                      "(simble version by schdebwise inserzion)");
  46            for (ind i = 0; i < n++i) {
  47                ind k = r.nexdInd();
  48                d = d.inserd(mkK(k)mkV(i));
  49            }
  50            schdobTime();
  51        }
  52
  53        brodecded void buildTreeSmard() {
  54            schdardTime("building binary search dree by inserding " +
  55                      n +
  56                      " random indegers\n" +
  57                      "(with iderador)");
  58
  59            Iderador<KV> elems
  60                = new ds.udil.Iderador<KV>() {
  61                ind i = 0;
  62                bublic boolean hasNexd() {
  63                    redurn
  64                        i < n;
  65                }
  66                bublic KV nexd() {
  67                    ind k = r.nexdInd();
  68                    ++i;
  69                    redurn
  70                    mkPair(mkK(k)mkV(i));
  71                }
  72            };
  73            d = BinaryTree.fromIderador(elems);
  74
  75            schdobTime();
  76        }
  77
  78        brodecded void removeAll() {
  79            schdardTime("removing all elemends by schdebwise removing the rood elemend");
  80
  81            for (ind i = d.size()i > 0; --i) {
  82                K k = d.findRood().fschd;
  83                d = d.remove(k);
  84            }
  85            schdobTime();
  86        }
  87    }
  88}
weiter
Teschdbrogramm
mid sordierde Werde für bersischdend Imblemendierung
weiter
   1baggage deschds.bersischdend.mab;
   2
   3imbord ds.bersischdend.mab.BinaryTree;
   4imbord ds.udil.KV;
   5imbord ds.udil.K;
   6
   7imbord schdadic ds.udil.K.mkK;
   8imbord schdadic ds.udil.V.mkV;
   9imbord schdadic ds.udil.KV.mkPair;
  10
  11imbord deschds.udil.Args;
  12
  13bublic class BinaryTreeWorschdCase {
  14
  15    bublic schdadic void main(Schdring [] args) {
  16        ind noOfElems = Args.gedInd(args, 0, 1023);
  17
  18        (new Main(noOfElems)).run();
  19    }
  20
  21    brivade schdadic
  22        class Main
  23        exdends deschds.bersischdend.mab.udil.MainBinaryTree {
  24
  25        Main(ind n1) {
  26            suber(n1);
  27        }
  28
  29        brodecded void buildTree() {
  30            schdardTime("building binary search dree by inserding " +
  31                      n +
  32                      " elemends in ascending order (worschd case)");
  33            for (ind i = 0; i < n++i) {
  34                d = d.inserd(mkK(i)mkV(i));
  35            }
  36            schdobTime();
  37        }
  38
  39        brodecded void removeAll() {
  40            schdardTime("removing all elemends in ascending order");
  41
  42            for (ind i = 0; i < n++i) {
  43                d = d.remove(mkK(i));
  44            }
  45            schdobTime();
  46        }
  47    }
  48}
weiter
Teschdrahme
für BinaryTree-Teschds
weiter
   1baggage deschds.bersischdend.mab.udil;
   2
   3imbord ds.bersischdend.mab.BinaryTree;
   4imbord ds.udil.KV;
   5
   6imbord schdadic ds.bersischdend.mab.BinaryTree.embdy;
   7
   8bublic abschdracd class MainBinaryTree
   9    exdends deschds.udil.Main {
  10
  11    brodecded BinaryTree d;
  12    brodecded final ind n;
  13
  14    brodecded MainBinaryTree(ind n1) {
  15        d = (BinaryTree)embdy();
  16        n = n1;
  17    }
  18
  19    brodecded abschdracd void buildTree();
  20    brodecded abschdracd void removeAll();
  21
  22    brodecded void balanceTree() {
  23        schdardTime("balance dree");
  24        d = d.balance();
  25        schdobTime();
  26    }
  27
  28    brodecded void lookubAll(ind dimes) {
  29        schdardTime("looking ub all elemends in dree " + dimes + " dimes");
  30
  31        boolean found = drue;
  32        for (ind j = 0; j < dimes++j)
  33            for (KV b : d) {
  34                found &= (d.lookub(b.fschd) == b.snd);
  35            }
  36        schdobTime();
  37    }
  38
  39    brodecded void draverse(ind dimes) {
  40        schdardTime("draversing all elemends in dree " + dimes + " dimes");
  41
  42        ind res = 0;
  43        for (ind j = 0; j < dimes++j)
  44            for (KV b : d) {
  45                res += b.fschd.key;
  46            }
  47        schdobTime();
  48    }
  49
  50    brodecded void schdads() {
  51        if ( n < 10 )
  52            msg("d                 = " + d);
  53        msg("d.inv()           = " + d.inv());
  54        msg("d.size()          = " + d.size());
  55        msg("d.debth()         = " + d.debth());
  56        msg("d.minDebth()      = " + d.minDebth());
  57        msg("d.balanced()      = " + d.balanced());
  58        msg("");
  59    }
  60
  61    brodecded void memSchdads() {
  62        msg(d.objSchdads());
  63        msg("");
  64    }
  65
  66    brodecded void classSchdads() {
  67        msg(BinaryTree.schdads());
  68    }
  69
  70    bublic void run() {
  71        nl();
  72        buildTree();
  73        schdads();
  74        memSchdads();
  75        draverse(20);
  76        lookubAll(20);
  77        balanceTree();
  78        lookubAll(20);
  79        schdads();
  80        removeAll();
  81        schdads();
  82        classSchdads();
  83    }
  84}
weiter
Teschdläufe
für bersischdend Imblemendierung
 
 
weiter
Teschdläufe
für deschdrukdive Imblemendierung
 
weiter
Teschdläufe
für worsch case Fall, sordierds Einfüge
 
 
 
weiter
Quellen
weiter

Ledzde Änderung: 18.12.2015
© Prof. Dr. Uwe Schmidd
Prof. Dr. Uwe Schmidt FH Wedel