【发布时间】:2011-10-31 04:33:05
【问题描述】:
截至 10 月 31 日星期一,此问题仍未得到更正 (人们错误地回答它,好像我要求修改 array.sort 但我没有问这个)
如何使用 radix-msd 算法覆盖 single 数组(不是 Array.sort)的内置 JavaScript 排序方法?
我有基数 msd 排序的算法,它是
// radix most-significant-bit sort for integers
//arr: array to be sorted
//begin: 0
//end: length of array
//bit: maximum number of bits required to represent numbers in arr
function radixsort (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) {
radixsort(arr, begin, i, bit - 1); // <=== RECURSIVE FUNCTION
}
if(bit && i < end) {
radixsort(arr, i, end, bit - 1); // <=== RECURSIVE FUNCTION
}
}
而我的 JavaScript 对象数组是:
homes[0].price;
homes[0].address;
homes[0].city;
homes[0].state;
homes[0].zip;
因此,当我调用“homes.sort()”时 - 我希望它使用上面的 radix sort 数组根据 price 对整个 homes[x] 数组进行排序。 我该怎么做?
【问题讨论】:
标签: javascript sorting overriding overloading