快速排序,排序一亿数据用时14秒

来源:互联网 发布:linux 看网站访问ip 编辑:程序博客网 时间:2024/06/06 00:12

  1. public class Demo135{
  2.         public static void main(String []args){
  3.                 int arr[]={-1,-5,6,2,0,9,-3,-8,12,7};
  4.                 QuickSort qs=new QuickSort();
  5.                 qs.sort(0, arr.length-1, arr);
  6.                 //输出最后结果
  7.                 for(int i=0;i<arr.length;i++){
  8.                         System.out.print(arr[i]+"\t");
  9.                 }
  10.         }
  11. }
  12. class QuickSort{
  13.         public void sort(int left,int right,int [] arr){
  14.                 int l=left;
  15.                 int r=right;
  16.                 int pivot=arr[(left+right)/2];//找中间值
  17.                 int temp=0;
  18.                 while(l<r){
  19.                         while(arr[l]<pivot) l++;
  20.                         while(arr[r]>pivot) r--;
  21.                         if(l>=r) break;
  22.                         temp=arr[l];
  23.                         arr[l]=arr[r];
  24.                         arr[r]=temp;
  25.                         if(arr[l]==pivot) --r;
  26.                         if(arr[r]==pivot) ++l;
  27.                 }
  28.                 if(l==r){
  29.                         l++;
  30.                         r--;
  31.                 }
  32.                 if(left<r) sort(left,r,arr);
  33.                 if(right>l) sort(l,right,arr);
  34.         }
  35. }

来源:http://bbs.itheima.com/thread-258551-1-1.html