利用Java语言实现快速排序算法

如题:利用Java语言实现快速排序算法

分析:
1、快速排序算法:先取一个标准数,然后从两端开始和这个标准数比较大小,比标准数大的放右边,比标准数小的放左边。
2、每比较一次后,两端相应的下标分别向中间移动,左边的向右移动(下标 +1),右边的向左移动(下标 -1)。
3、当左右两个下标重合时,再将标准数赋给这个重合的位置。
4、第一轮结束后,会出现左右两块,左边的都小于等于标准数,右边的都大于等于标准数。
5、将左右两块分别看成一个新的数组,进行递归。
6、递归截至的条件为:左边的位置不小于右边的位置。

具体代码如下:


import java.util.Arrays;

public class QuickSort {

    public static void main(String[] args) {
        int[] arr = new int[]{5,3,7,3,8,2,7,1,9,3,4,2,9,8,6,9,5,0,5};
        System.out.println(Arrays.toString(arr));
        quickSort(arr, 0, arr.length - 1);
        System.out.println(Arrays.toString(arr));
    }

    private static void quickSort(int[] arr, int start, int end) {
        if(start < end){
            // 确定一个标准数,用来进行比对
            int stard = arr[start];
            // 记录一下排序的下标,最高位和最低位
            int high = end;
            int low = start;
            // 利用循环找出比标准数大的数和比标准数小的数
            while(low < high){
                // 当右边(最高位)的数字比标准数大时
                while(low < high && arr[high] >= stard){
                    high--;
                }
                // 将右边的数字的值赋给左边的数字
                arr[low] = arr[high];
                // 然后判断左边的数字和标准数的大小
                while(low < high && arr[low] <= stard){
                    low++;
                }
                arr[high] = arr[low];
            }
            // 当高位和低位重合时,即两者指向同一个元素,再将标准数赋给他们(高位或者低位都行)
            arr[high] = stard;
            // 处理左边所有小于等于标准数的数字
            quickSort(arr, start, low);
            // 处理右边所有比标准数大的数字
            quickSort(arr, low + 1, end);
        }
    }
}

代码实现结果如下:

[5, 3, 7, 3, 8, 2, 7, 1, 9, 3, 4, 2, 9, 8, 6, 9, 5, 0, 5]
[0, 1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7, 7, 8, 8, 9, 9, 9]

人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
-----------纳兰性德

小白寄语:学如逆水行舟,不进则退。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值