原创 x778518694 随笔个人笔记 4 阅读 15 分钟前
JS 数组升序排序 (快速排序)
有问题请严厉地指出, 谢谢
JS 代码
- (function () {
- function _quick (arr, i, j) {
- var min = i, max = j;
- if (i>= j) return arr;
- for (; i != j;) {
- // 靠后的元素小于靠前的元素则交换两者值, 并交换下标位置
- if (arr[Math.max(i, j)] <arr[Math.min(i, j)]) {
- [arr[a], arr[b]] = [arr[b], arr[a]];
- [i, j] = [j, i];
- }
- // 基准值 i 位置靠后, 则待比较的值的下标增加, 反之减少;
- i> j ? j++ : j--;
- }
- _quick(arr, min, i - 1);
- _quick(arr, i + 1, max);
- }
- this.Sort = {
- quick: function (arr) {
- _quick(arr, 0, arr.length - 1);
- }
- };
- })();
调用示例
- const arr = [345,23,123,54];
- Sort.quick(arr);
- console.log(arr);
来源: http://www.qdfuns.com/article/34644/76be68402899d5909c9b01fffaf2136f.html