java实现快速排序

  对于快速排序,课堂上当时就没理解,今天看了一下,大概可以写出来了

  思想:找一个元素作为基准数,然后从数组前后两边取出元素和基准数基表,从后面找到比基准数小的数,下标i,从前边找到比基准数大的数,下标j,然后两数交换,过程中判断并保证i<j;

  这样继续循环下去,当i=j时停止,此时第一轮操作结束,更新基准数:把当前基准数和停止数即下标为i的书交换,此时可以保证,除新的基准数外,下标为i的数比前边的数大,比后边的数小;

  接下来用递归对前后两部分分别做以上操作。

  代码如下:

int [] array;
    public void quickSort(int left,int right){
        if(left >right){
            return;
        }
        int i,j,temp,base;
        i = left;
        j = right;
        base = array[i];
        while(i != j){
            while(array[j]>=base&&i<j){
                j--;
            }while(array[i]<=base&&i<j){
                i++;
            }
            if(i<j){
                temp = array[i];
                array[i] = array[j];
                array[j] = temp;
            }
        }
        array[left] = array[i];
        array[i]=base;
        quickSort(left, i-1);
        quickSort(i+1, right);
        
    }
View Code

输入数组:9,8,7,6,5,4,3,2,1

输出结果:1,2,3,4,5,6,7,8,9

posted @ 2016-01-21 13:04  liglercy  阅读(154)  评论(0编辑  收藏  举报