目錄
- 題目方法:
- 優化方法:
- 代碼:
題目方法:
忘記快速排序看這里:鏈接: link
優化方法:
代碼:
public int[] sortArray(int[] nums) {qsort(nums,0,nums.length-1);return nums;}private void qsort(int[] nums, int L, int r){if(L >= r) return;int key = nums[new Random().nextInt(r-L+1)+L];//基準元素int left = L-1,right = r+1,i = L;//注意這里的left和right會隨遞歸改變,不能寫死while(i < right){if(key > nums[i]) swap(nums, ++left, i++);else if(key == nums[i]) i++;else swap(nums, --right, i);}//[L,letf][letf+1,right-1][right,r]qsort(nums,L,left);qsort(nums,right,r);}private void swap(int[] nums, int i, int j){int t = nums[i];nums[i] = nums[j];nums[j] = t;}