hash排序(哈希排序)的一个JavaScript实现,支持负数
2023-09-14 09:03:08 时间
<html>
<script>
(function main() {
var array = [1, 4, -1, 2, 0, -5, -3, 3, -2, -4, 5];
var minusArray = [], positiveArray = [];
for( var i = 0; i < array.length; i++) {
array[i] >= 0 ? positiveArray.push(array[i]): minusArray.push(-array[i]);
}
Array.prototype.max = array_max;
hashSort(minusArray, positiveArray);
})();
function hashSort(min,positive) {
var result = revert(hashSortInternal(min)).concat(hashSortInternal(positive));
console.log("after sort: " + result);
}
function array_max( ){
var i, max = this[0];
for (i = 1; i < this.length; i++) {
if (max < this[i])
max = this[i];
}
return max;
}
function hashSortInternal(array) {
var bucket = [];
var MAX = array.max() + 1;
for (var i = 0; i < MAX; i++)
bucket[i] = 0;
for(var i=0; i< array.length; i++)
bucket[array[i]]++;
for(var i = 0, idx = 0; i<MAX; i++) {
for(var k= bucket[i]; k >0; k--) {
array[idx++] = i;
}
}
return array;
}
function revert(array) {
var result = [];
for( var i = array.length - 1, idx = 0; i >=0; i--)
result[i] = -array[idx++];
array.length = 0;
return result;
}
</script>
</html>
相关文章
- 关于JavaScript的数组随机排序
- javascript语法
- 第一百四十七节,封装库--JavaScript,滑动导航
- javascript: 用图片加载演示promise的应用(chrome 107.0.5304.110)
- JavaScript Boolean Object 逻辑
- 面向对象的JavaScript(2):类
- [Javascript] Advanced Reduce: Additional Reducer Arguments
- javascript:每次只加载3个页面的幻灯(chrome 105.0.5195.125)
- 快速排序(Quicksort)的Javascript实现
- JavaScript自定义排序条件
- javascript案例12——Array数组排序、升序、降序
- javascript中的类型转换
- 【 华为OD机试 2023】字符串重新排序(C++ Java JavaScript Python)
- javascript中区分鼠标单击和拖动事件
- JavaScript 数据结构与算法之美 - 归并排序、快速排序、希尔排序、堆排序
- 对 typescript 的理解?与 javascript 的区别?
- 【阅读笔记】JavaScript设计模式与开发实践2--闭包与单例、策略模式