排序算法-快速排序

       快速排序算法是排序算法中效率比较高的一种算法,它主要思想是二分与递归。快速排序算法一开始可能比较难理解,但是理解之后也是比较容易记住的。


快速排序算法的主要思想

1.以数组元素的第一个数为判断数(哨兵元素)

2.从数组元素的队尾开始,找到一个别哨兵元素小的元素Right

3.从数组元素的队头开始,找到一个别哨兵元素大的元素Left

4.交换元素Right与Left

5.循环3、4步骤,知道Right与Left的位置相等,交换哨兵元素的位置

6.将哨兵元素的前部队列与后部队列一次重复上述步骤,使用递归完成排序

   /**
     * 快速排序法
     */
    public void quickSort(int[]a, int left, int right){
        int i,j,t,temp;
        if(left>right)return;
        temp=a[left];
        i=left;j=right;
        while(i!=j){
            while(a[j]>=temp && i<j){ //右边第一个小于判断数(temp)的数
                j--;
            }
            while(a[i]<=temp && i<j){ //左边第一个小于判断数(temp)的数
                i++;
            }
            if (i<j){  //交换两个数位置
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
        }
        //此时i=j,与判断数交换位置
        a[left] = a[i];
        a[i] = temp;
        quickSort(a,left,i-1);
        quickSort(a,i+1,right);
    }


时间复杂度分析

排序算法的平均时间复杂度为O(Nlogn),最差时间复杂度为O(n2)

以下是个人对快速排序法的理解和代码。针对高效率的快速排序算法还有待研究



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值