快速排序算法Java

news/2024/5/19 21:47:52 标签: java, 快速排序, 排序算法, 大数据
java"><p>快速排序排序相对于普通排序算法效率很高,特别是对于大数据优势体现的相当明显</p><p>下面是java程序</p><p><span style="BACKGROUND-COLOR: #ffffff">主程序:</span></p>
java">import java.util.*;
/**
 *
 * @author Acer
 */
public class Sort {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        int size=10000000;//<span style="color:#ff0000;">千万数据
</span>        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
    }

    
<p>}
</p>

QuickSort//快速排序

java">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);
        }
    }
    
}


SelectSort//普通选择排序

java">public class SelectSort {//选择排序
    public void Select(long SJ[],int size){
        long t;
        for(int i=0;i<size;i++)
        {
            for(int j=i+1;j<size;j++)
            {
                if(SJ[i]>SJ[j])
                {
                    t=SJ[i];
                    SJ[i]=SJ[j];
                    SJ[j]=t;
                }
            }
        }
        
    }
}


 

java">public class JC {
    public boolean PD(long SJ[],int size){
        for(int i=1;i<size;i++){
            if(SJ[i-1]>SJ[i])
                return false;
        }
        return true;
    }
}


计算结果:(tool:notebeans)

请输入选择:2
快速排序运行时间: 1469ms
普通选择排序基本上运算不出来

 


http://www.niftyadmin.cn/n/1403796.html

相关文章

DrawText如何使多行文字居中

&#xff08;1&#xff09;DT_WORDBREAK 只能截断单词。例如如果输入一连串英文字符&#xff0c;那么它会当做一个单词来处理&#xff0c;而不会自动换行。而对于中文字符则可以。如果要对所有字符都可以像Edit控件中那样自动换行&#xff0c;那么可以使用DT_WORDBREAK | DT_ED…

Android中实现拨打电话、发送短信、响铃、震动和获取当前时间

如果要实现以下功能&#xff0c;需先在Androidmainifest.xml中注册来获取权限&#xff0c;xml代码如下&#xff1a; <uses-permission android:name"android.permission.SEND_SMS"/> 请求获取发送短信权限<uses-permission android:name"android.perm…

error C2440: 'static_cast' : cannot convert from 'LRESULT (__thiscall CchatDlg::* )(CPoint)' to 'UI

出现这个错误的原因可是“人力不可抗拒”之原因造成的&#xff0c;因为旧版本的 ON_WM_NCHITTEST 宏使用了 UINT (__thiscall CWzButton::* )(CPoint); 类型的类成员函数指针&#xff0c;其定义如下&#xff1a; #define ON_WM_NCHITTEST() / { WM_NCHITTEST, 0, 0, 0, Afx…

装系统之ThinkpadE450

工具&#xff1a;U盘、Windows8.1系统&#xff08;可在系统之家下载&#xff09; 装系统会格式化C盘&#xff0c;注意保存重要数据 步骤&#xff1a; 1.制作老毛桃U盘&#xff0c;这一步很简单&#xff0c;在老毛桃官网下载个制作工具即可&#xff0c;安装之后一键制作即可 …

Android实践——使用Bmob实现登录、注册等功能

Bmob云可以用于云端数据库&#xff0c;使用方便简单&#xff0c;只需要我们在Bmob云注册之后&#xff0c;获取产品apk即可&#xff0c;下面代码就简单介绍了一下 我们可以写一个User类&#xff0c;包含name、password import cn.bmob.v3.BmobObject; import cn.bmob.v3.listen…

CDC

CDC 是MFC中绘图有关的类CObject └CDC CDC类定义的是设备上下文对象的类。 CDC对象提供处理显示器或打印机等设备上下文的成员函数&#xff0c;以及处理与窗口客户区对应的显示上下文的成员。 通过CDC对象的成员函数进行所有的绘图。 类对设备上下文操作提供了成员函数&#x…

【设计模式】之 概述

软件设计模式系列文章是我在学习刘伟先生编著的《设计模式的艺术之道》之后的一些经验总结&#xff0c;希望对大家理解设计模式有一些帮助。设计模式是一套被反复利用的&#xff0c;多数人知晓的&#xff0c;经过分类编目的、代码设计经验的总结&#xff0c;使用设计模式是为了…

CBitmap和HBITMAP的区别及相互转换方法

hbitmap是bitmap的指针&#xff0c; msdn中&#xff1a;Handle to a bitmap.typedef HANDLE HBITMAP; cbitmap是mfc中封装bitmap的类&#xff1b; msdn中&#xff1a;Encapsulates&#xff08;囊括&#xff09; a Windows graphics device interface (GDI)bitmap and provid…