File tree Expand file tree Collapse file tree 4 files changed +63
-1
lines changed Expand file tree Collapse file tree 4 files changed +63
-1
lines changed Original file line number Diff line number Diff line change 73
73
"bucket" : " Bucket Sort" ,
74
74
"bubble" : " Bubble Sort" ,
75
75
"comb" : " Comb Sort" ,
76
- "counting" : " Counting Sort" ,
76
+ "counting" : " Counting Sort" ,
77
77
"cycle" : " Cycle Sort" ,
78
78
"heap" : " Heapsort" ,
79
79
"insertion" : " Insertion Sort" ,
80
80
"merge" : " Merge Sort" ,
81
+ "pigeonhole" : " Pigeonhole Sort" ,
81
82
"quick" : " Quicksort" ,
82
83
"radix" : " Radix Sort" ,
83
84
"selection" : " Selection Sort" ,
Original file line number Diff line number Diff line change
1
+ var min = A [ 0 ] ;
2
+ var max = A [ 0 ] ;
3
+
4
+ for ( var i = 1 ; i < N ; i ++ ) {
5
+ if ( A [ i ] < min ) {
6
+ min = A [ i ] ;
7
+ }
8
+ if ( A [ i ] > max ) {
9
+ max = A [ i ] ;
10
+ }
11
+ }
12
+ var range = max - min + 1 ;
13
+
14
+ var holes = new Array ( range ) ;
15
+ for ( var i = 0 ; i < range ; i ++ ) {
16
+ holes [ i ] = [ ] ;
17
+ }
18
+ tracer2 . _setData ( holes ) ;
19
+
20
+ logTracer . _print ( 'Filling up holes' ) ;
21
+ for ( var i = 0 ; i < N ; i ++ ) {
22
+ tracer1 . _select ( i ) . _wait ( ) ;
23
+
24
+ holes [ A [ i ] - min ] . push ( A [ i ] ) ;
25
+
26
+ tracer2 . _setData ( holes ) ;
27
+ tracer1 . _deselect ( i ) ;
28
+ }
29
+
30
+ logTracer . _print ( 'Building sorted array' ) ;
31
+ var k = 0 ;
32
+ for ( var i = 0 ; i < range ; i ++ ) {
33
+ for ( var j = 0 ; j < holes [ i ] . length ; j ++ ) {
34
+ tracer2 . _select ( i , j ) . _wait ( ) ;
35
+ A [ k ++ ] = holes [ i ] [ j ] ;
36
+ tracer1 . _notify ( k - 1 , A [ k - 1 ] ) . _wait ( ) ;
37
+ tracer2 . _deselect ( i , j ) ;
38
+ tracer1 . _denotify ( k - 1 ) ;
39
+ }
40
+ }
41
+
42
+ logTracer . _print ( 'Sorted array is ' + A ) ;
Original file line number Diff line number Diff line change
1
+ var A = Array1D . random ( 7 ) ;
2
+ var N = A . length ;
3
+
4
+ var tracer1 = new Array1DTracer ( 'Array' ) . _setData ( A ) ;
5
+ var tracer2 = new Array2DTracer ( 'Holes' ) ;
6
+ var logTracer = new LogTracer ( 'Console' ) ;
Original file line number Diff line number Diff line change
1
+ {
2
+ "Pigeonhole Sort" : " Pigeonhole sorting is a sorting algorithm that is suitable for sorting lists of elements where the number of elements (n) and the number of possible key values (N) are approximately the same." ,
3
+ "Complexity" : {
4
+ "time" : " O(n + N)" ,
5
+ "space" : " O(n)"
6
+ },
7
+ "References" : [
8
+ " <a href='https://en.wikipedia.org/wiki/Pigeonhole_sort'>Wikipedia</a>"
9
+ ],
10
+ "files" : {
11
+ "basic" : " Pigeonhole Sort"
12
+ }
13
+ }
You can’t perform that action at this time.
0 commit comments