`
houkai2009
  • 浏览: 218287 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
  • 浪迹随风: 文章是挺好的,不过太杂了。。。信息量也很大。。。很难消化。。。 ...
    EJB 介绍
  • javaersu: yds3300376yd 写道学习了,只是楼主写的有点杂,现在 ...
    EJB 介绍
  • yds3300376yd: 学习了,只是楼主写的有点杂,现在还看不太懂,刚学习EJB,我觉 ...
    EJB 介绍
  • javaersu: 不错,这里也有一篇类似的EJB文章教程http://www.y ...
    EJB 介绍
  • dingding5060: brother , 你贴代码想说明什么???
    enum

快速排序算法的java实现

    博客分类:
  • java
 
阅读更多

快速排序思想: 

    一趟快速排序是: 

1,随机产生一数列,选取第一个数(这里也可选其他的数)作为比较的基石,假设这个数为X,这样X=A[0];设两个变量i=0,j=n-1;n是这个数列的长度 

2,从前面开始找,找到第一个比A[0]大的数,找到了就与X交换 

3,从后面开始找,找到第一个比A[0]小的数,找到了就与X交换 

4,重复步骤2,3,直到i=j; 

这样一趟快速排序就完成了;第一趟完成之后,X左边的数就全部小于X了,X右边的数九全部大于X,然后采用递归方式对X左边的数和X右边的数进行快速排序。 

java实现代码如下: 

Java代码  收藏代码

public class QSort {   

   /**  

      * @param pData 需要排序的数组  

      * @param left  左边的位置,初始值为0  

      * @param right 右边的位置,初始值为数组长度  

      */   

     public static void QuickSort(int[] pData,int left,int right)   

     {   

       int i,j;   

       int first,temp;   

       i = left;   

       j = right;   

       first = pData[left]; //这里选其他的数也行,不过一般选第一个  

       //一趟快速排序   

       while(true)   

       {   

       //从第二个数开始找大于中枢的数 ,从前面开始找大于pData[left]的数  

           while((++i)<right-1 && pData[i]<first);   

           //从最后一个数开始找第一个小于中枢pData[left]的数   

           while((--j)>left && pData[j]>first);   

           if(i>=j)   

               break;   

           //交换两边找到的数   

           temp = pData[i];   

           pData[i] = pData[j];   

           pData[j] = temp;   

    

       }   

       //交换中枢   

       pData[left] = pData[j];   

       pData[j] = first;   

       //递归快排中枢左边的数据   

       if(left<j)   

         QuickSort(pData,left,j);   

       //递归快排中枢右边的数据   

       if(right>i)   

         QuickSort(pData,i,right);   

     }   

    

     public static void main(String[] args){   

      

        int [] pData = new int[5];   

        for(int i = 0; i< 5; i++)   

             pData[i] = (int)(Math.random()*100);//Produce 10 random integers   

          

         for(int i = 0; i<pData.length; i++){   

             System.out.print(pData[i]+" ");    

         }  

         QSort.QuickSort(pData, 0, pData.length);   

          

         System.out.println("\n***********************");   

          

         for(int i = 0; i<pData.length; i++){   

             System.out.print(pData[i]+" ");   

         }  

     }    

}  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics