给你一个整数数组 nums,请你将该数组升序排列。
冒泡--超时了
快速排序--超时了
插入排序--1247ms
快排--935ms
public static int[] sortArray(int[] nums) {
quickSort(nums,0,nums.length-1);
return nums;
}
public static void quickSort(int[] arr,int start,int end){
if (start>=end) return;
int p=arr[start];
int left=start;
int right=end;
while(left<=right){
//从左端开始遍历,直到找到比p大的值
while (left<=right && arr[left]<p){
left++;
}
//从右端开始遍历,直到找到比p小的值
while (left<=right && arr[right]>p){
right--;
}
//开始交换
if (left<=right){
int temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
left++;
right--;
}
}
//左半段继续快排
quickSort(arr,start,right);
//右半段继续快排
quickSort(arr,left,end);
}