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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class QuickSort
  2. {
  3.         public static void quickSort(Integer [] x, int p, int r)//排序函数
  4.         {
  5.                 if(p<r)
  6.                 {
  7.                         int q=partition(x,p,r);
  8.                         quickSort( x, p, q-1);
  9.                         quickSort(x,q+1,r);
  10.                 }
  11.         }

  12.         public static int partition(Integer [] x, int p, int r)//分割函数使该角标左边元素小于该值,右边元素大于该值
  13.         {
  14.                 int i=p,j=r+1;
  15.                 int temp=x[p];
  16.                 while(true)
  17.                 {
  18.                         while(x[++i]<temp&&i<r)
  19.                                 ;
  20.                         while(--j>temp)
  21.                                 ;
  22.                         if(i>=j)
  23.                                 break;
  24.                         swap(x,i,j);
  25.                        
  26.                 }
  27.                 x[p]=x[j];
  28.                 x[j]=temp;
  29.                 return j;
  30.         }
  31.         public static void swap(Integer [] x, int i, int j)//交换数组的两个元素
  32.         {
  33.                 int temp=x[i];
  34.                 x[i]=x[j];
  35.                 x[j]=temp;
  36.         }
  37.         public static void main(String[] args)
  38.         {
  39.                 Integer []x={5,2,3,1,9,4,6,8};
  40.                 for(int i=0; i<x.length; i++)
  41.                 {
  42.                         System.out.print(x[i]+"--");
  43.                         if(i==x.length-1)
  44.                         {
  45.                                 System.out.println("");
  46.                         }
  47.                        
  48.                 }
  49.                
  50.                        
  51.                 quickSort(x,0,7);
  52.                 //swap(x,0,1);
  53.                
  54.                 for(int i=0; i<x.length; i++)
  55.                 {
  56.                         System.out.print(x[i]+"--");
  57.                         if(i==x.length-1)
  58.                         {
  59.                                 System.out.println("");
  60.                         }
  61.                 }
  62.         }
  63.        
  64. }
复制代码

1 个回复

倒序浏览
  1. while(true)
  2.                 {
  3.                             //向右寻找比key大的数
  4.                         while(i<x.length-1&&x[++i]<key);
  5.                         //向左寻找比key小的数           
  6.                         while(j>0&&--j>key);
  7.                         //
  8.                         if(i>j)
  9.                                 break;
  10.                         swap(x,i,j);
  11.                         
  12.                 }
复制代码
现在可以用了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马