【java数据结构】快速排序
package quicklySort;
public class QuicklySort {
/**
* 获取枢纽下标
* @param arr
* @param left
* @param right
* @return
*/
private static int getStart(int arr[],int left,int right) {
int temp = arr[left];//选一个值作为中间值作为枢纽
while(left<right) {//从右向左找比temp小的
while(arr[right] >= temp && left < right) {
right--;
}
if(left<right) {
arr[left] = arr[right];//将比temp小的放在低端
left++;
}
while(arr[left] <= temp && left < right) {//从左向右找比temp大的
left++;
}
if(left<right) {
arr[right] = arr[left];//将比temp大的放在高端
right--;
}
}
arr[left] = temp;//当left = right时,将中间值放下
return left;//返回枢纽下标
}
/**
* 快速排序
* @param arr
* 待排序数组
* @param left
* 起点
* @param right
* 终点
*/
public static void quickSort(int[] arr,int left,int right) {
if(left < right) {
int s = getStart(arr,left,right);
quickSort(arr, left, s-1);
quickSort(arr, s+1, right);
}
}
/**
* 快速排序
* @param arr
* 待排序数组
*/
public static void quickSort(int[] arr) {
int left = 0;
int right = arr.length-1;
if(left < right) {
int s = getStart(arr,left,right);
quickSort(arr, left, s-1);
quickSort(arr, s+1, right);
}
}
}
网络上志同道合,我们一起学习网络安全,一起进步,QQ群:694839022