Merge pull request #190 from jarettgross/bucket-sort · boro741/AlgorithmVisualizer@e3e017e · GitHub
Skip to content

Commit e3e017e

Browse files
authored
Merge pull request algorithm-visualizer#190 from jarettgross/bucket-sort
Implemented bucket sort
2 parents a2c88e4 + eb49d9e commit e3e017e

4 files changed

Lines changed: 72 additions & 0 deletions

File tree

algorithm/category.json

Lines changed: 1 addition & 0 deletions
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
//place numbers into appropriate buckets
2+
for (let i = 0; i < array.length; i++) {
3+
var bucketPos = Math.floor(numBuckets * (array[i] / maxValue));
4+
buckets[bucketPos].push(array[i]);
5+
bucketsCount[bucketPos]++;
6+
tracer._select(0, i)._wait();
7+
tracer._notify(1, bucketPos, D[1][bucketPos])._wait();
8+
tracer._deselect(0, i);
9+
tracer._denotify(1, bucketPos, D[1][bucketPos]);
10+
}
11+
12+
var sortLocation = 0;
13+
for (let k = 0; k < buckets.length; k++) {
14+
//do insertion sort
15+
for (let i = 1; i < buckets[k].length; i++) {
16+
var key = buckets[k][i];
17+
var j;
18+
for (j = i - 1; (j >= 0) && (buckets[k][j] > key); j--) {
19+
buckets[k][j + 1] = buckets[k][j];
20+
}
21+
buckets[k][j + 1] = key;
22+
}
23+
24+
//place ordered buckets into sorted array
25+
for (let i = 0; i < buckets[k].length; i++) {
26+
sortedArray[sortLocation] = buckets[k][i];
27+
bucketsCount[k]--;
28+
tracer._notify(1, k, D[1][k]);
29+
tracer._notify(2, sortLocation, D[2][sortLocation])._wait();
30+
tracer._denotify(1, k, D[1][k]);
31+
tracer._denotify(2, sortLocation, D[2][sortLocation]);
32+
sortLocation++;
33+
}
34+
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
var maxValue = 100;
2+
var arraySize = 10;
3+
var numBuckets = 5;
4+
5+
//initialize array values
6+
var array = Array1D.random(arraySize, 0, maxValue - 1);
7+
var buckets = [];
8+
var bucketsCount = [];
9+
var sortedArray = [];
10+
for (let i = 0; i < arraySize; i++) {
11+
if (i < numBuckets) {
12+
buckets[i] = [];
13+
bucketsCount[i] = 0;
14+
}
15+
sortedArray[i] = 0;
16+
}
17+
var D = [
18+
array,
19+
bucketsCount,
20+
sortedArray
21+
];
22+
23+
var tracer = new Array2DTracer();
24+
tracer._setData(D);

algorithm/sorting/bucket/desc.json

Lines changed: 13 additions & 0 deletions

0 commit comments

Comments
 (0)