快速排序80000000数据排序10s

  • 快速排序80000000数据排序
  • i5 8th大约十秒
package Sort;

import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;

/**
 * 实现快速排序的算法
 * @author bxh
 *
 */
public class QuickSort {
	public static void main(String[] args) {
//		int[] arr= {7,2,6,5,3,9,1,4,0,8};
//		quicksort(arr, 0, arr.length-1);
//		System.out.println("快速排序后的数组为"+Arrays.toString(arr));
		int[] arr=new int[80000000];
		for(int i=0;i<80000000;i++)
		{
			arr[i]=(int)(Math.random()*8000000);
		}
		Date date1=new Date();
		SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String date1Str=(String)simpleDateFormat.format(date1);
		System.out.println("排序前的时间为"+date1Str);
		
		quicksort(arr, 0, arr.length-1);
//		quicksort(arr, 0, arr.length-1);
//		
		
		Date date2=new Date();
		SimpleDateFormat simpleDateFormat1=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String date1Str2=(String)simpleDateFormat1.format(date2);
		System.out.println("排序后的时间为"+date1Str2);
		
	}
	//找到每次快排后的index位置 方便后续的递归操作
	public static int indexsearch(int[] arr,int leftindex,int rightindex) {
		int base=arr[leftindex];
		while(leftindex<rightindex)
		{
			while(leftindex<rightindex&&arr[rightindex]>=base)
			{
				rightindex--;
			}
			arr[leftindex]=arr[rightindex];
			while(leftindex<rightindex&&arr[leftindex]<=base)
			{
				leftindex++;
			}
			arr[rightindex]=arr[leftindex];
			
		}
		arr[leftindex]=base;
		return leftindex;
	}
	/**
	 * 
	 * @param arr		待排序的数组
	 * @param leftindex  左索引
	 * @param rightindex 右索引
	 */
	public static void quicksort(int[] arr,int leftindex,int rightindex) {
		if(leftindex<rightindex)
		{
			int index=indexsearch(arr, leftindex, rightindex);
			quicksort(arr, leftindex, index-1);
			quicksort(arr, index+1, rightindex);
		}
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值