排序数组
题目
给定一个整数数组 nums,将该数组升序排列。
示例 1:
输入:[5,2,3,1]
输出:[1,2,3,5]
示例 2:
输入:[5,1,1,2,0,0]
输出:[0,0,1,1,2,5]
提示:
1 <= A.length <= 10000
-50000 <= A[i] <= 50000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sort-an-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
排序方法比较多,这里我就不一一列举了.我最熟悉的算法就是快速排序了.快速排序的思路就是最开始选定一个基准,然后将这个基准进行定位,使基准左边的数字都比他小.之后不停的换基准就可以了.
代码
class Solution {
public int[] sortArray(int[] nums) {
//今天的就是各种排序
//最熟悉的快速排序
fastSort(0,nums.length-1,nums);
return nums;
}
private void fastSort(int left,int right,int[] nums){
if(left >= right){
return;
}
int index = nums[left];
int i = left;
int j = right;
while(i < j){
while(i < j && index < nums[j]){
j--;
}
nums[i] = nums[j];
while(i < j && index >= nums[i]){
i++;
}
nums[j] = nums[i];
}
nums[i] = index;
fastSort(left,i-1,nums);
fastSort(i+1,right,nums);
}
}
网友评论