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

闲来重写一下快速排序

时间:2016-08-14 20:47:06      阅读:168      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!