Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // MSB radix sort
- //arguments to sort an array:
- //arr: array to be sorted
- //begin: 0
- //end: length of array
- //bit: maximum number of bits required to represent numbers in arr
- function sort(arr, begin, end, bit)
- {
- var i, j, mask;
- i = begin;
- j = end;
- mask = 1 << bit;
- while(i < j)
- {
- while(i < j && !(arr[i] & mask))
- {
- ++i;
- }
- while(i < j && (arr[j - 1] & mask))
- {
- --j;
- }
- if(i < j)
- {
- j--;
- var tmp = arr[i];
- arr[i] = arr[j];
- arr[j] = tmp;
- i++;
- }
- }
- if(bit && i > begin)
- {
- sort(arr, begin, i, bit - 1);
- }
- if(bit && i < end)
- {
- sort(arr, i, end, bit - 1);
- }
- }
- // test case
- for (var arr=[],i=0;i<1000000;i++) arr.push(~~(Math.random()*4294967296)); // 1 million random numbers
- console.time("radix");
- sort(arr, 0, arr.length, 32); //Here I've assumed that the values in arr are integers that fit in 32 bits
- console.timeEnd("radix");
- // radix: 780.000ms
- /*
- radix: 1ms # 1.000
- radix: 8ms # 10.000
- radix: 77ms # 100.000
- radix: 745ms # 1.000.000
- radix: 7168ms # 10.000.000
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement