快速排序算法与其它排序算法的笔记(Java)

快速排序排序相对于普通排序算法效率很高,特别是对于大数据优势体现的相当明显下面是java程序主程序:

public class Sort {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int size=10000000;//千万数据
        long[] SJ=new long[size];
        Random random1 = new Random();//获得随机数
        JC jc=new JC();
        for(int i=0;i<size;i++)
        {
            SJ[i]=random1.nextInt();
           //System.out.println(random1.nextInt());
        }
        System.out.print("请输入选择:");
        int c;
        Scanner input =new Scanner(System.in);
        c=input.nextInt();
        switch(c)
        {
            case 1:   //普通排序算法     
                long startTime=System.currentTimeMillis();   //获取开始时间
                SelectSort s1=new SelectSort();
                s1.Select(SJ, size);
                long endTime=System.currentTimeMillis(); //获取结束时间
                System.out.println("普通排序运行时间: "+(endTime-startTime)+"ms");
                break;
            case 2: //快速排序算法
                startTime=System.currentTimeMillis();   //获取开始时间
                QuickSort s2=new QuickSort();
                s2.Qsort(0,size-1,SJ);
                endTime=System.currentTimeMillis(); //获取结束时间
                if(jc.PD(SJ,size))//判断是否有序
                        System.out.println("快速排序运行时间: "+(endTime-startTime)+"ms");
                break;
        }
        // TODO code application logic here

QuickSort//快速排序

public class QuickSort {
    public int  Fdsort(int low,int high,long SJ[])
    {
       long s=SJ[low];
        long flag=SJ[low];
        while(low<high)
        {
            while(low<high && SJ[high]>=flag) --high;
            SJ[low]=SJ[high];
            while(low<high && SJ[low]<=flag) ++low;
            SJ[high]=SJ[low];
        }
        SJ[low]=flag;
        return low;

    }
    public void Qsort(int low,int high,long SJ[])
    {
        if(low<high)
        {
            int flag=Fdsort(low,high,SJ);
            Qsort(low,flag-1,SJ);
            Qsort(flag+1,high,SJ);
        }
    }

}

计算结果:(tool:notebeans)
请输入选择:2
快速排序运行时间: 1469ms
普通选择排序基本上运算不出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值