java 实现快排

本文详细解读了快速排序(QuickSort)和堆排序(HeapSort)在Java中的实现,包括快速排序的分治策略和堆排序的基准选择过程。通过代码实例展示了如何使用这两种常见排序算法对整数数组进行排序,并提供了排序后的结果。
摘要由CSDN通过智能技术生成

快排和堆排是面试中常问的两种排序方式
快排的java代码如下
堆排序的思想是在待排序的数组中随机取一个数作为基准pivot
比pivot小的元素放在pivot的左边,比pivot大的元素放在pivot的右边,然后对左右两边的数组递归的进行这样的步骤

public class QuickSortion {

    public static void main(String[] args) {
        int[] nums = {7, 6, 7, 11, 5, 12, 3, 0, 1};
        sort(nums, 0, nums.length - 1);
        System.out.println("排序后:" + Arrays.toString(nums));
    }

    public static void sort(int[] arr,int l,int  r){
        if(l < r){
            int mid = get_mid(arr,l,r);
            //左边递归
            sort(arr,l,mid - 1);
            //右边递归
            sort(arr,mid + 1,r);
        }
    }
	//找出基准应该在的位置,同时把数组分为左右两边
	//左边的都比基准小,右边的都比基准大
    private static int get_mid(int[] arr, int l, int r) {
        int pivot = arr[l];
        while (l < r){
            while (l < r && arr[r] >= pivot){
                r--;
            }
            arr[l] = arr[r];
            while (l < r && arr[l] <= pivot){
                l++;
            }
            arr[r] = arr[l];
        }
        arr[l] = pivot;
        return l;
    }
}

结果

排序后:[0, 1, 3, 5, 6, 7, 7, 11, 12]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值