aureooms/js-radixsort

View on GitHub
src/array/core/rank.js

Summary

Maintainability
A
0 mins
Test Coverage
import assert from 'assert';

/**
 * O(n) time.
 *
 * @param {Array} ch The cumulative histogram of the input.
 * @param {Array} array The input array to sort.
 * @param {Number} i Inclusive left boundary of the array.
 * @param {Number} j Non-inclusive right boundary of the array.
 * @param {Array} permutation The output permutation.
 */
const rank = (ch, array, i, j, permutation) => {
    assert(i >= 0 && j <= array.length);
    assert(i >= 0 && j <= permutation.length);
    for (; i < j; ++i) {
        assert(array[i] >= 0 && array[i] < ch.length);
        assert(ch[array[i]] >= 0 && ch[array[i]] < permutation.length);
        permutation[i] = ch[array[i]]++;
    }
};

export default rank;