public class QuickSort {快排
//这是一个main方法,是程序的入口:
public static void main(String[] args) {
int[] array = {41,12,33,34,54};
quick(array,0,array.length-1);
for (int arr:array) {
System.out.println(arr+"\t");
}
}
public static void quick(int[] arr,int left,int right){
if(arr==null||arr.length==0){
return;
}
if(left>right){
return;
}
//定义一个key用来当做中间值
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;
}
}
//交换kay和重叠值
arr[left]=arr[l];
arr[l] = key;
//完成两遍递归
quick(arr,left,l-1);
quick(arr,l+1,right);
}
}
快排 分治和递归
最新推荐文章于 2024-06-07 19:52:27 发布