首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我正在努力了解我的快速实现有什么问题。

我正在努力了解我的快速实现有什么问题。
EN

Stack Overflow用户
提问于 2022-05-02 19:37:36
回答 1查看 30关注 0票数 -1

我很想知道这个快速实现有什么问题.

代码语言:javascript
复制
/**
 * @param {number[]} nums
 * @return {number[]}
 */
var sortArray = function(nums) {
    return quicksortWrapper(nums);
};

let quicksortWrapper = function(nums) {
    quicksort(nums, 0, nums.length - 1);
    return nums;
}

let quicksort = function(arr, lp, rp) {
    if (lp < rp) {
        let pivot = partition(arr, lp, rp);
        quicksort(arr, lp, pivot - 1);
        quicksort(arr, pivot + 1, rp);
    }
}

let partition = function(arr, lp, rp) {
    let pivot = rp;
    for (let i = lp; i < rp; i++) {
        if (arr[i] < arr[pivot]) {
            swap(arr, lp, i);
            i++;
            lp++;
        } else {
            i++;
        }
    }
    swap(arr, lp, pivot);
    return lp;
}

let swap = function(arr, l, r) {
    let temp = arr[l];
    arr[l] = arr[r];
    arr[r] = temp;
}

输入为9,12,2,0,代码输出0,9,2,12,但应该输出0,2,9,12。我已经发现,第一个错误的迭代是对快速排序(0、12、2、9、1、3)的调用。

EN

回答 1

Stack Overflow用户

发布于 2022-05-03 16:56:07

我很确定我的错误是在for循环中增加我,这个循环已经在每次迭代开始时增加了我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72091560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档