码迷,mamicode.com
首页 > 编程语言 > 详细

快速排序

时间:2016-05-03 00:15:31      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

    void quick(int[] arr, int left, int right){
        if(left > right){
            return;
        }
        //以基准数为分界限,将比基准线大的都移动到基准数的右边,将比基准数小的都移动到基准数的左边
        //每次找到一对就交换位置,最后确定基准数的位置
        int temp = arr[left], i = left, j = right;
        while(i != j){
            while(i < j && arr[j] >= temp){
                //找到一个比基准数小的
                j --;
            }
            while( i < j && arr[i] <= temp){
                //找到一个比基准数大的
                i ++;
            }
            if(i < j){
                //交换比基准数小的,与基准数大的
                int tmp = arr[i];
                arr[i] = arr[j];
                arr[j] = tmp;
            }
        }
        //交换基准数的位置
        arr[left] = arr[i];
        arr[i] = temp;

        quick(arr, left, i - 1);
        quick(arr, i + 1, right);
    }
    void quick1(int[] arr, int left, int right){
        if(left > right){
            return;
        }
        int temp = arr[left], i = left, j = right;
        while(i != j){
            while(i < j && arr[j] >= temp){
                //找到一个比基准数大的,将其移动到基准数的右边
                j --;
            }
            arr[i] = arr[j];
            while( i < j && arr[i] <= temp){
                //找到一个比基准数小的移动到基准数的左边
                i ++;
            }
            arr[j] = arr[i];

        }
        //交换基准数的位置
        arr[i] = temp;
        
        quick(arr, left, i - 1);
        quick(arr, i + 1, right);
    }

 

快速排序

标签:

原文地址:http://www.cnblogs.com/xiaoxian1369/p/5453405.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!