A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 微--尘 中级黑马   /  2016-7-5 00:36  /  622 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

快排算法怎么写?

1 个回复

倒序浏览
  1. public class Quick {
  2.     public static void sort(Comparable[] a) {
  3.         StdRandom.shuffle(a);
  4.         sort(a,0,a.length-1);
  5.     }

  6.     public static void sort(Comparable[] a, int lo, int hi) {
  7.         if(hi<=lo) return;
  8.         int j=partition(a,lo,hi);    //j前的元素不大于a[j],j后的元素不小于a[j]
  9.         sort(a,lo,j-1);
  10.         sort(a,j+1,hi);
  11.     }

  12.     public static int partition(Comparable[] a, int lo, int hi) {
  13.         int i=lo;
  14.         int j=hi;
  15.         Comparable v=a[lo];
  16.         while(true) {
  17.             while(less(a[++i],v)) {if(i==hi) break;}
  18.             while(less(v,a[--j])) {if(j==lo) break;}
  19.             if(i>=j) break;
  20.             exch(a,i,j);
  21.         }
  22.         exch(a,lo,j);
  23.         return j;
  24.     }
  25.     public static void exch(Comparable[] a, int i, int min) {
  26.         Comparable t=a[i];
  27.         a[i]=a[min];
  28.         a[min]=t;
  29.     }
  30.     public static boolean less(Comparable v, Comparable w) {
  31.         return v.compareTo(w)<0;
  32.     }
  33. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马