java实现快速排序算法

快速排序

不稳定排序
空间复杂度:O(递归层数) ;最好空间复杂度:O(log(底数为2)n) ; 最坏空间复杂度 :O(n)
时间复杂度:O(n*递归层数) ;最好时间复杂度:O(nlog(底数为2)n) ;最坏时间复杂度: O(n²)
递归层数: 把n个元素组成排序二叉树,二叉树的层数就是递归调用的层数
n个节点的二叉树最小高度为[log(底数为2)n]+1 最大高度=n

    public static void main(String[] args) {
        int[] ary= {49,38,65,97,76,13,27,49,90};
        QuickSort(ary,0,ary.length-1);
        for (int x : ary) { //遍历ary数组
            System.out.print(x+ " ");
        }
    }

    private static void QuickSort(int[] ary,int low, int high) {
       if(low<high){
           int pviotIndex =  partition(ary,low,high); //枢轴存放的位置索引
           QuickSort(ary, low,pviotIndex-1); //对枢纽元素左边元素进行递归调用
           QuickSort(ary, pviotIndex+1,high);//对枢纽元素右边元素进行递归调用

       }
    }

    private static int partition(int[] ary,int low, int high) {
        int pviot = ary[low]; //将第一个元素作为枢轴
        while (low<high){ //用low high 搜索枢轴最终位置
            while (low<high&&ary[high]>=pviot){
                high--;
            }
            ary[low] = ary[high]; //比枢轴小的移动到左边
            while (low<high&&ary[low]<pviot){
                low++;
            }
            ary[high] = ary[low]; //比枢轴大的移动到左边
        }
        ary[low] = pviot;   //枢轴存放的最终位置

        return low;
    }
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值