912 - Sort an Array

 JAVA

  • class Solution {
        private int[] nums;
    
        public int[] sortArray(int[] nums) {
            this.nums = nums;
            quikcSort(0, nums.length - 1);
            return nums;
        }
    
        private void quikcSort(int l, int r) {
            if (l >= r) {
                return;
            }
            int x = nums[(l + r) >> 1];
            int i = l - 1, j = r + 1;
            while (i < j) {
                while (nums[++i] < x) {
                }
                while (nums[--j] > x) {
                }
                if (i < j) {
                    int t = nums[i];
                    nums[i] = nums[j];
                    nums[j] = t;
                }
            }
            quikcSort(l, j);
            quikcSort(j + 1, r);
        }
    }

C++

  • class Solution {
    public:
        vector<int> sortArray(vector<int>& nums) {
            function<void(int, int)> quick_sort = [&](int l, int r) {
                if (l >= r) {
                    return;
                }
                int i = l - 1, j = r + 1;
                int x = nums[(l + r) >> 1];
                while (i < j) {
                    while (nums[++i] < x) {
                    }
                    while (nums[--j] > x) {
                    }
                    if (i < j) {
                        swap(nums[i], nums[j]);
                    }
                }
                quick_sort(l, j);
                quick_sort(j + 1, r);
            };
            quick_sort(0, nums.size() - 1);
            return nums;
        }
    };

Comments