排序思想:首先选定一个排序区间,设置一个标准数(通常为区间的第一个数),通过设置高低位指针依次与标准数进行大小比较,将比标准数大的交换至前边,比标准数小的交换至后边,当高低位指针重合时即标准数应处的位置;然后对标准数左右两边的区间进行递归操作,最终实现排序。时间复杂度:O(nlogn)。
package dataStructure.sortTest;
import java.util.Arrays;
/**
* 快速排序
*
* @author lyq
* @create 5/1/19
*/
public class QuickSort {
public static void main(String[] args) {
int[] arr = {3,6,1,4,2};
sort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
/**
* @param arr 要排序的数组
* @param start 排序区间起点
* @param end 排序区间结尾
*/
public static void sort(int[] arr,int start,int end){
if (start < end) {
int low = start;
int high = end;
int standar = arr[start];
while (low < high) {
while (high > low && arr[high] >= standar) {
high--;
}
arr[low] = arr[high];
while (high > low && arr[low] <= standar) {
low++;
}
arr[high] = arr[low];
}
arr[low] = standar;
//左区间
sort(arr,start,low-1);
//右区间
sort(arr,low+1,end);
}
}
}