Idempotent partition around median of 5?

tn via Digitalmars-d digitalmars-d at puremagic.com
Sat Feb 6 10:42:07 PST 2016


On Saturday, 6 February 2016 at 13:06:37 UTC, Andrei Alexandrescu 
wrote:
> Could you please add two simple calculations? Assuming uniform 
> random distribution of data, compute the average number of 
> swaps as a weighted average of orderings. Also, show the number 
> of lines (one test or one swap per line) as a proxy for 
> generated code size. That should provide good insights.

This now prints the numbers of comparison and swap lines and 
computes the average numbers of swaps. In addition, it also runs 
the same tests for permutations of 5 elements some of which might 
be equal (an example of such permutation would be [1, 2, 0, 2, 
3], on the other hand [1, 2, 0, 2, 4] should not be included 
since it is identical). However, in this case the average number 
of swaps is perhaps not so meaningful.

http://dpaste.dzfl.pl/2012caf872ec

Output:

testing 'partition5a'
   Code: comparisons = 63, swaps = 107, total = 170
   With all orderings of distinct elements:
     0 swaps: 4 instances
     1 swaps: 32 instances
     2 swaps: 68 instances
     3 swaps: 16 instances
     Average number of swaps: 1.8
   With all orderings of potentially nondistinct elements:
     Error, not idempotent: [0, 0, 0, 0, 0] => [0, 0, 0, 0, 0]
testing 'partition5b'
   Code: comparisons = 17, swaps = 21, total = 38
   With all orderings of distinct elements:
     0 swaps: 4 instances
     1 swaps: 20 instances
     2 swaps: 42 instances
     3 swaps: 40 instances
     4 swaps: 14 instances
     Average number of swaps: 2.33333
   With all orderings of potentially nondistinct elements:
     0 swaps: 36 instances
     1 swaps: 122 instances
     2 swaps: 200 instances
     3 swaps: 146 instances
     4 swaps: 37 instances
     Average number of swaps: 2.04806
testing 'partition5c'
   Code: comparisons = 10, swaps = 12, total = 22
   With all orderings of distinct elements:
     0 swaps: 4 instances
     1 swaps: 14 instances
     2 swaps: 25 instances
     3 swaps: 30 instances
     4 swaps: 26 instances
     5 swaps: 16 instances
     6 swaps: 5 instances
     Average number of swaps: 3.06667
   With all orderings of potentially nondistinct elements:
     0 swaps: 36 instances
     1 swaps: 92 instances
     2 swaps: 130 instances
     3 swaps: 138 instances
     4 swaps: 92 instances
     5 swaps: 42 instances
     6 swaps: 11 instances
     Average number of swaps: 2.60628
testing 'partition5d'
   Code: comparisons = 7, swaps = 8, total = 15
   With all orderings of distinct elements:
     0 swaps: 4 instances
     1 swaps: 14 instances
     2 swaps: 24 instances
     3 swaps: 29 instances
     4 swaps: 26 instances
     5 swaps: 16 instances
     6 swaps: 6 instances
     7 swaps: 1 instances
     Average number of swaps: 3.13333
   With all orderings of potentially nondistinct elements:
     0 swaps: 36 instances
     1 swaps: 100 instances
     2 swaps: 128 instances
     3 swaps: 133 instances
     4 swaps: 94 instances
     5 swaps: 39 instances
     6 swaps: 10 instances
     7 swaps: 1 instances
     Average number of swaps: 2.57486
testing 'partition5e'
   Code: comparisons = 6, swaps = 8, total = 14
   With all orderings of distinct elements:
     0 swaps: 4 instances
     1 swaps: 12 instances
     2 swaps: 19 instances
     3 swaps: 25 instances
     4 swaps: 25 instances
     5 swaps: 18 instances
     6 swaps: 11 instances
     7 swaps: 5 instances
     8 swaps: 1 instances
     Average number of swaps: 3.53333
   With all orderings of potentially nondistinct elements:
     0 swaps: 36 instances
     1 swaps: 88 instances
     2 swaps: 100 instances
     3 swaps: 123 instances
     4 swaps: 106 instances
     5 swaps: 53 instances
     6 swaps: 25 instances
     7 swaps: 9 instances
     8 swaps: 1 instances
     Average number of swaps: 2.89649



More information about the Digitalmars-d mailing list