JAVA快速排序

 一、快速排序简介


简介:快速排序,基于冒泡排序移动换位思想——通过遍历,判断每个数并放置在数组合适的位置。思路如下:

选定一个基准值pivot(通常指定为数组第一个值),比基准值大的放在右侧,比基准值小的放在左侧
指定左右两个指针分别为left,right ;left < right
指定函数退出条件,即left > right
先从右向左遍历,即右指针向左移动——right–操作,发现比pivot小的值暂停移动
再从左向右遍历,即左指针向右移动——left++操作,发现比pivot大的值暂停移动
交换左右指针发现的两个值的位置
当两指针相遇,即left == right,当前值与pivot交换位置

二、代码如下(示例):

public static void quickSort(double value[],int left,int right){
        //判断快速排序结束的时间点
        if(left >= right){
            return;
        }
        //定义基准数
        double base = value[left];
        int i = left;
        int j = right;
        //找到第一个比基准数小的数据
        while(i < j){
            while(value[j] >= base && i < j){
                j--;
            }
            while(value[i] <= base && i < j){
                i++;
            }
            if(i < j){
                double temp = value[i];
                value[i] = value[j];
                value[j] = temp;
            }
        }
        //交换 i[j] 和基准数位置的值
        double temp = value[i];
        value[i] = base;
        value[left] = temp;
        //左半区
        quickSort(value,left,i-1);
        quickSort(value,i+1,right);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值