A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一个人理解,查资料弄了半天,后来发现有这张图加上代码会更加容易理解快速排序,我把个人经验分享出来,希望对大家能有所帮助.

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, 下载次数: 3)

574e9258d109b3dee4ddfa6acfbf6c81800a4c55(1).jpg

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马