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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public class Paixu {

        public static void main(String[] args) {
           int[] a={5,45,12,89,100,47,20,33,54,18,95};
           quickSort(a,0,a.length-1);
           for (int i=0;i<a.length;i++) {
                        System.out.print(a[i]+" ");
                }
           System.out.println();
        }
        static void quickSort(int a[],int left,int right)    //对数组a[]从left到right进行排序
        {
                int i;
                if(right<=left)
                {
                        return;
                }
                i=partion(a,left,right);
                quickSort(a,left,i-1);       //对左半部排序
                quickSort(a,i+1,right);    //对右半部排序
        }
   static int partion (int a[],int left,int right)   //获取中间数的下标,比中间数大的在右边,比中间数小的在左边
   {
           int i=left;
           int j=right-1;
           int item=a[right];
         while(true)
           {
                   while(a[i]<item) i++;   //如果比选定的数大,一直右移
                   while(item<a[j])           //如果比选定的数小,一直右移
                   {
                           j--;
                   if(j==0) break;            //边界处理
                   }
                   if(i>=j) break;             //如果左边和右边扫描相遇
                           int temp=a[i];          //把大的换到右边,把小的换到左边
                           a[i]=a[j];
                           a[j]=temp;
           }
                   int temp=a[i];             //最后把最右边选定的参照值换到中间
                   a[i]=a[right];
                   a[right]=temp;
                   return i;                      //返回
           }
   }


1 个回复

正序浏览
竟然都没人来夸我
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马