快速排序2

来源:互联网 发布:淘宝上的nikelab acg 编辑:程序博客网 时间:2024/06/05 03:00
 public static void quickSort2(int[] a, int left, int right) {    {         int i,j,tmp,pivot ;         if(left>right) {        return;         }       pivot=a[left]; //pivot中存的就是基准数         i=left;         j=right;         while(i!=j)         {          //顺序很重要,要先从右边开始找,如果先从左边找,i++后若满足i>=j则停止,i对应一个大于基准的数,再与基准数交换到左边就不对了!                        while(a[j]>=pivot && i<j) {                           j--;                        }                       //再找做左边的                        while(a[i]<=pivot && i<j) {                    i++;                        }                       //交换两个数在数组中的位置                        if(i<j)                        {                        tmp=a[i];                             a[i]=a[j];                             a[j]=tmp;                        }         }         //最终将基准数归位         swap(a,left,i);        quickSort2(a,left,i-1);//继续处理左边的,这里是一个递归的过程         quickSort2(a,i+1,right);//继续处理右边的 ,这里是一个递归的过程     }     }
static void swap(int[]a ,int i,int j){int t;a[i];a[i] = a[j];a[j] = t;}

0 0
原创粉丝点击