黑马程序员技术交流社区

标题: 快速排序,排序一亿数据用时14秒 [打印本页]

作者: 我若为神    时间: 2015-11-8 22:44
标题: 快速排序,排序一亿数据用时14秒
  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. }
复制代码



作者: 唐彬    时间: 2015-11-8 23:27
表示很NB!
作者: chenhaiqian    时间: 2015-11-9 00:11

作者: li3N    时间: 2015-11-9 13:38
这个就是传说中的希尔排序么。。。说是夹杂位运算什么的
作者: ln0491    时间: 2015-11-9 14:23
牛B。。。。。。。。。。。。
作者: 雨来    时间: 2015-11-9 15:29
QuickSort qs=new QuickSort();  没有接触过查一下API
作者: 雨来    时间: 2015-11-9 15:35
原来是自己定义的class QuickSort{
作者: 指西针    时间: 2015-11-9 16:56
这是二分还是?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2