java实现的快速排序小示例

Posted Neo_Gamer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现的快速排序小示例相关的知识,希望对你有一定的参考价值。

写了个快速排序,结果是正确的,达到预期,请各路朋友指教。

/**
 * 快速排序示例,先选定基准值,比基准值大的放在右边,比基准值小的在左边
 * 右边先比较,再左边比较,再右边比较,再左边比较......
 *
 * @author x_wq
 * @date   2021/11/11 14:47
 */
public class QuickSortDemo {

    public static void main(String[] args) {
        int[] array = {12, 7, 20, 13, 34, 9, 18, 25, 6};
        quick(array, 0, array.length - 1);
        System.out.println(Arrays.toString(array));
    }

    private static void quick(int[] array, int start, int end) {
        int tmp = array[start];
        int tmpIndex = 0;

        int left = start;
        int right = end;
        while (left < right) {
            // 右边遍历
            while (array[right] >= tmp && right > left) {
                right --;
            }
            array[left ++] = array[right];
            if (right == left - 1) {
                tmpIndex = right;
                break;
            }

            // 左边遍历
            while (array[left] <= tmp && left < right) {
                left ++;
            }
            array[right --] = array[left];
            if (left == right + 1) {
                tmpIndex = left;
                break;
            }

        }
        array[tmpIndex] = tmp;

        // 以当前基准值将数组分成两部分,继续循环
        int leftIndex = tmpIndex - 1;
        int rightIndex = tmpIndex + 1;
        if (leftIndex > 0 && leftIndex > start) {
            quick(array, start, leftIndex);
        }
        if (rightIndex < array.length - 1 && rightIndex < end) {
            quick(array, rightIndex, end);
        }
    }
}

以上是关于java实现的快速排序小示例的主要内容,如果未能解决你的问题,请参考以下文章

java实现的快速排序小示例

java实现的快速排序小示例

快速排序-递归实现

数据结构-排序之快速排序(使用Java代码实现)

数据结构-排序之快速排序(使用Java代码实现)

数据结构-排序之快速排序(使用Java代码实现)