快速排序(java实现)
时间复杂度(平均) | 时间复杂度(最坏) | 时间复杂度(最好) | 空间复杂度 | 空间复杂度 | 稳定性 | 复杂性 |
---|---|---|---|---|---|---|
快速排序 | O(nlog2n) | O(n2) | O(nlog2n) | O(nlog2n) | 不稳定 | 较简单 |
public static void quick(int[] arr,int left,int right){
//首先确保传入数组 不为空
if(arr==null||arr.length==0){
return;
}
//确保 左右下标值符合要求
if(left > right){
return;
}
//拿到最左边的值给 base下标
int key =arr[left];
int l = left;
int r = right;
while(l!=r){
while(arr[r] >= key && l<r){
r--;
}
while(arr[l] <= key && l<r){
l++;
}
if(l<r){
int temp = arr[l];
arr[l] = arr[r];
arr[r] = temp;
}
}
arr[left] = arr[l];
arr[l] = key;
quick(arr,left,l-1);
quick(arr,l+1,right);
}