黑马程序员技术交流社区

标题: [Java/Android] [快速排序]分享一张图加代码加深理解 [打印本页]

作者: 吃人汪    时间: 2016-3-18 22:47
标题: [Java/Android] [快速排序]分享一张图加代码加深理解
一个人理解,查资料弄了半天,后来发现有这张图加上代码会更加容易理解快速排序,我把个人经验分享出来,希望对大家能有所帮助.

public static final void quickSort(int[] array, int start, int end) {
    // i相当于助手1的位置,j相当于助手2的位置
    int i = start, j = end;
    int pivot = array[i]; // 取第1个元素为基准元素
    int emptyIndex = i; // 表示空位的位置索引,默认为被取出的基准元素的位置
     while (i < j) {
        // 助手2开始从右向左一个个地查找小于基准元素的元素
        while (i < j && pivot <= array[j])
            j--;
        if (i < j) {
            array[emptyIndex] = array[emptyIndex = j];
        }
        while (i < j && array[i] <= pivot)
            i++;
        if (i < j) {
           array[emptyIndex] = array[emptyIndex = i];
        }
    }      
     array[emptyIndex] = pivot;
     if (i - start > 1) {
        quickSort(array, 0, i - 1);
    }
    if (end - j > 1) {
        quickSort(array, j + 1, end);
    }
}

       

574e9258d109b3dee4ddfa6acfbf6c81800a4c55(1).jpg (24.84 KB, 下载次数: 7)

574e9258d109b3dee4ddfa6acfbf6c81800a4c55(1).jpg





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2