快速排序小结

       定义:快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(nlogn)次比较。事实上,快速排序通常明显比其他Ο(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,并且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。快速排序,通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。


    看下列的图片形象的感知一下快速排序的操作。(这个图是从别的地方看到的,感觉很形象就借用了。)


        代码实践:接下来就是代码级别的了。

package com.bjpowernode.struts;

import java.util.ArrayList;


/**
 * Created by lenovo on 2017/7/23.
 */
public class 快速排序 {
    public static int QuickPartition(int [] R, int low, int high){
        int base=R[low];
        while(low<high){
            //从右向左开始找,
            while ((low<high) && (R[high]>=base))
                //循环体
                high--;
                R[low]=R[high];

            while((low<high) && (R[low]<=base))
                //循环体
                low++;
                R[high]=R[low];



        }
        R[low]=base;

        return low;
    }
    //完整的快速排序使用递归
    public static int[] QuickSort(int [] R,int low,int high){
        int temp=QuickPartition(R,low,high);
        QuickPartition(R,low,temp-1);
        QuickPartition(R,temp+1,high);
        return R;

    }
    public static int[] sort(int[] array) {
        return QuickSort(array, 0, array.length - 1);
    }
    //测试
    public static void main(String[] args) {
        int [] a={45,38,66,90,88,10,25,46};
        QuickSort(a,0, 7);
        System.out.println("最终结果");
        int [] sorted= sort(a);
        for (int i : sorted) {
            System.out.print(i + " ");
        }
    }
}
        在这个过程中遇到了一个小小的问题,想起来都是自己给自己挖的坑,见过坑别人的,还是头一次看见坑自己的。

        时间复杂度的衡量:

        最好的nlog2n,最差的时候就直接是n的平方了。

        以上就是个人对快速排序的一个简单的小结,欢迎走过路过的博友们拍砖。

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值