快速排序算法Java

来源:互联网 发布:安卓网络监控 编辑:程序博客网 时间:2024/06/06 14:11
<p>快速排序排序相对于普通排序算法效率很高,特别是对于大数据优势体现的相当明显</p><p>下面是java程序</p><p><span style="BACKGROUND-COLOR: #ffffff">主程序:</span></p>
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//快速排序

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//普通选择排序

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;                }            }        }            }}


 

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
普通选择排序基本上运算不出来

 

1 0
原创粉丝点击