package util;
import java.util.Arrays;
public class kuaiSuPaixu {
public static void main(String[] args) {
int [] arr = {5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,8,5,4,1,2,6,4,7,85,4,1,2,6,4,7,8};
//获取开始时间
long startTime = System.nanoTime();
kuaisuPX(arr,0,arr.length-1);
//获取结束时间
long endTime = System.nanoTime();
System.out.println("程序运行时间为:"+(endTime-startTime)+"纳秒");
//1秒等于1000毫秒
//1毫秒等于1000微秒
//1微秒等于1000纳秒
System.out.println(Arrays.toString(arr));
}
//编写快速排序的方法
public static void kuaisuPX(int [] arr,int left,int right) {
if(left>right) {
return;
}
//先得到排序的参照数
int temp = arr[left];
int i = left;
int j = right;
int t;//用来作交换操作的参数
while(i<j) {
//先看右边,一直找到比参照数小的值,如果j的数值比参照数大,就往左边移动一位
while(arr[j]>=temp && i<j) {
j--;
}
//看左边,如果i的数值比小于等于参照数,i就往右移动一位
while(temp>=arr[i] && i<j) {
i++;
}
if(i<j) {
t = arr[j];
arr[j] = arr[i];
arr[i] = t;
}
}
arr[left] = arr[j];
arr[j] = temp;
//递归调用左半数组
kuaisuPX(arr,left,j-1);
//递归调用右半数组
kuaisuPX(arr,j+1,right);
}
}