首页 > 编程语言 > 详细

闲来重写一下快速排序

时间:2016-08-14 20:46:59      阅读:299      评论:0      收藏:0      [点我收藏+]

还是写一下原理吧:

有图为证:

技术分享   

下图为原理示意图

技术分享

package Alrithm;

public class Quick {
    public static void sort(int[] arr, int low, int high) {
        int min = low;// 用于动态移动角标
        int max = high;// 用于动态移动角标
        if (low < high) {// 元素大于一个才进行排序
            int temp = arr[low];// 定义基数
            while (min < max) {// 在角标重合时跳出循环
                // 新从最大值开始
                while (min < max && arr[max] > temp) {// 右边的数大于基数时,max--
                    max--;
                }
                // 减完之后在换位置
                int tmp = arr[min];
                arr[min] = arr[max];
                arr[max] = tmp;
                // 再从最小值开始
                while (min < max && arr[min] < temp) {
                    min++;
                }
                int tmp1 = arr[min];
                arr[min] = arr[max];
                arr[max] = tmp1;
            }
            sort(arr, low, min - 1);
            sort(arr, min + 1, high);
        }
    }

    public static void main(String[] args) {
        int[] arr = { 21, 32, 122, 433, 2322222, 56, 121, 565, 123 };
        sort(arr, 0, arr.length - 1);
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + ",");
        }

    }
}

 

闲来重写一下快速排序

原文:http://www.cnblogs.com/tabchanj/p/5770897.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!