Skip to content

Commit 3a8f4c3

Browse files
Radix Sort and readme
1 parent 786b84a commit 3a8f4c3

File tree

2 files changed

+52
-1
lines changed

2 files changed

+52
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ Com o objetivo de alcançar uma abrangência maior e encorajar novas pessoas a c
6060
| Insertion Sort Recursivo | C/C++ | Java | [Python](/src/python/insertion_sort_recursivo.py) | Go | Ruby | Javascript | Pascal |
6161
| [Merge Sort][44] | [C/C++](/src/c/MergeSort.c) | [Java](/src/java/Mergesort.java) | Python | [Go](/src/go/mergesort/mergesort.go) | [Ruby](/src/ruby/merge_sort.rb) | [Javascript](/src/javascript/MergeSort.js) | [Pascal](/src/pascal/sort/mergesort.pas) |
6262
| [Quicksort][45] | [C/C++](/src/c/QuickSort.cpp) | [Java](/src/java/Quicksort.java) | [Python](/src/python/quick_sort.py) | [Go](/src/go/quicksort/quicksort.go) | [Ruby](/src/ruby/quick_sort.rb) | [Javascript](/src/javascript/QuickSort.js) | Pascal |
63-
| [Radix Sort][46] | C/C++ | [Java](/src/java/RadixSort.java) | Python | [Go](/src/go/radixsort/radixsort.go) | [Ruby](/src/ruby/radix_sort.rb) | Javascript | Pascal |
63+
| [Radix Sort][46] | C/C++ | [Java](/src/java/RadixSort.java) | Python | [Go](/src/go/radixsort/radixsort.go) | [Ruby](/src/ruby/radix_sort.rb) | [Javascript](/src/javascript/RadixSort.js) | Pascal |
6464
| [Selection Sort][47] | [C/C++](/src/c/SelectionSort.cpp) | [Java](/src/java/SelectionSort.java) | [Python](/src/python/selection_sort.py) | [Go](/src/go/selectionsort/selectionsort.go) | [Ruby](/src/ruby/selection_sort.rb) | [Javascript](/src/javascript/SelectionSort.js) | [Pascal](/src/pascal/selectsort.pas) |
6565
| [Shell Sort][48] | C/C++ | [Java](/src/java/ShellSort.java) | [Python](/src/python/shell_sort.py) | [Go](/src/go/shellsort/shellsort.go) | Ruby | [Javascript](/src/javascript/ShellSort.js) | Pascal |
6666
| [Timsort][53] | C/C++ | Java | [Python](/src/python/tim_sort.py) | Go | Ruby | Javascript | Pascal |

src/javascript/RadixSort.js

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/**
2+
* @param {number[]} vector
3+
*/
4+
function RadixSort(vector) {
5+
let i = 0;
6+
let b = new Int32Array(vector.length);
7+
let bigger = vector[0];
8+
let exp = 1;
9+
10+
for (i = 0; i < vector.length; i++) {
11+
if (vector[i] > bigger)
12+
bigger = vector[i];
13+
}
14+
15+
while(parseInt(bigger / exp) > 0){
16+
let bucket = new Int32Array(10);
17+
18+
for (i = 0; i < vector.length; i++)
19+
bucket[parseInt(parseInt((vector[i] / exp)) % 10)]++;
20+
for (i = 1; i < 10; i++)
21+
bucket[i] += bucket[i - 1];
22+
for (i = vector.length - 1; i >= 0; i--)
23+
b[--bucket[parseInt(parseInt((vector[i] / exp)) % 10)]] = vector[i];
24+
for (i = 0; i < vector.length; i++)
25+
vector[i] = b[i];
26+
27+
exp *= 10;
28+
}
29+
}
30+
31+
function main() {
32+
const MAX_LENGTH = 20;
33+
let vector = [];
34+
let values = "[";
35+
for (let index = 0; index < MAX_LENGTH; index++) {
36+
let value = Math.floor(Math.random() * 99); // 0 - 99
37+
vector.push(value);
38+
values += `${value}, `;
39+
}
40+
values += "]";
41+
42+
console.log(values);
43+
44+
RadixSort(vector);
45+
values = "[";
46+
vector.forEach(v => values+=`${v}, `);
47+
values += "]";
48+
console.log(values);
49+
}
50+
51+
main();

0 commit comments

Comments
 (0)