您的位置:首页 > 编程语言 > Java开发

快速排序Java实现

2016-09-20 22:30 435 查看
这里有个问题需要说明,由于快排用到里递归调用,递归调用栈需要额外的空间,所以快排的空间复杂度不是O(1),而是O(log n)

public class Main {

public static void main(String[] args) {
int[] arr = {3,4,2,6,4,8,4};
quickSort(arr, 0, arr.length - 1);
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
}

public static void quickSort(int[] arr, int begin, int end){
if(arr == null || arr.length == 0 || begin >= end){
return;
}

int left = begin;
int right = end;
int target = arr[left];

while(left < right){
while(left < right && arr[right] >= target){
right--;
}
if(left < right){
arr[left] = arr[right];
left++;
}

while(left < right && arr[left] <= target){
left++;
}
if(left < right){
arr[right] = arr[left];
right--;
}

}
arr[left] = target;
int index = left;

quickSort(arr, begin, index - 1);
quickSort(arr, index + 1, end);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: