繁体   English   中英

尝试通过快速排序实现解决数组排序问题

[英]Trying to solve array sorting problem with quicksort implementation

对于这个 leetcode 问题,我应该对一个整数数组进行排序。 我试过使用快速排序算法。 每次运行测试用例时,我的算法都会完全失败。 它只是以相同的顺序返回数组。 我不知道为什么我的算法失败了。

 class Solution {    
    public int[] sortArray(int[] nums) {
        int len = nums.length;
        quicksort(nums, nums[0], nums[len-1]);
        return nums;
    }
    public void quicksort(int[] nums, int low, int high) {
        int i = low;
        int j = high;
        int middle = (low + high) / 2;
        int pivot = nums[middle];
        
        while(i <= j) {
            while(nums[i] < pivot) {
                i++;
            }
            while(nums[j] > pivot) {
                j--;
            }
            if(i <= j) {
                swap(nums, i, j);
                i++;
                j--;
            }
        }
        
        if(low < j) {
            quicksort(nums, low, j); 
        }
        if(i < high) {
            quicksort(nums, i, high);
        }
    }
    public void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}

没关系修好了。 改为quicksort(nums, 0, len-1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM