GeezerVison is showing github.com — Implemented Pigeonhole Sort · tangjun1990/AlgorithmVisualizer@3da8311
File treeExpand file treeCollapse file tree Open diff view settings Expand file treeCollapse file tree Open diff view settings Collapse file Copy file name to clipboardExpand all lines: algorithm/category.json +2-1Lines changed: 2 additions & 1 deletion | 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", | |
Collapse file Copy file name to clipboard +42Lines changed: 42 additions & 0 deletions | 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 ); |
Collapse file Copy file name to clipboard +6Lines changed: 6 additions & 0 deletions | 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' ); |
Collapse file Copy file name to clipboard +13Lines changed: 13 additions & 0 deletions | 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 | +} |
Collapse file Copy file name to clipboardExpand all lines: gulpfile.babel.js +1Lines changed: 1 addition & 0 deletions | Original file line number | Diff line number | Diff line change |
|---|
| 1 | 1 | 'use strict'; | | 2 | +var Promise = require ('es6-promise').Promise; | 2 | 3 |
| 3 | 4 | import path from "path"; | 4 | 5 | import gulp from "gulp"; | |
|