public class Demo {
public static void main(String[] args) {
int[] arr1=new int[8000000];
for (int i = 0; i <arr1.length ; i++) {
arr1[i]=(int)(Math.random()*8000000);
}
long timeMillis = System.currentTimeMillis();
sort(arr1,0,arr1.length-1);
long millis = System.currentTimeMillis();
System.out.println(millis-timeMillis);
}
//需要一个数组,开始值,结束值来得到中间的索引
public static void sort(int[] arr,int left,int right){
//定义接受数据的变量
int l=left;
int r=right;
int mid=(l+r)/2;
int temp=0;
//当左边索引小于右边时
while (l<r){
//从左边第一个索引一直往后移来判断
while (arr[l]<arr[mid]){
l++;
}
//右边最后一个开始往前移
while (arr[r]>arr[mid]){
r--;
}
//当第一次交换完结束
if(l>=r){
break;
}
//交换数据,让小于中间的数一组,大于中间的数一组
temp=arr[l];
arr[l]=arr[r];
arr[r]=temp;
if(arr[l]==arr[mid]){
l++;
}
if(arr[r]==arr[mid]){
r--;
}
}
if(l==r){
l++;
r--;
}
if(left<r){
sort(arr,left,r);
}
if(right>r){
sort(arr,right,r);
}
}
}