`
houkai2009
  • 浏览: 228934 次
  • 性别: 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]+" ");   

         }  

     }    

}  

分享到:
评论

相关推荐

    快速排序算法JAVA实现

    在Java中,我们可以创建一个名为`Qsort`的类来实现快速排序。这个类包含两个主要方法:`sort`和`partition`。`sort`方法是快速排序的递归入口,`partition`方法则是快速排序的核心,它负责将数组分为两部分,并返回...

    快速排序算法java代码

    "快速排序算法java代码" 快速排序算法是由Tony Hoare在1960年提出的一种排序算法,它的平均时间复杂度为O(n log n),是目前最快的排序算法之一。下面我们将详细地讲解快速排序算法的java代码实现。 快速排序算法的...

    Java实现快速排序算法+编程知识+技术开发

    Java实现快速排序算法+编程知识+技术开发; Java实现快速排序算法+编程知识+技术开发; Java实现快速排序算法+编程知识+技术开发; Java实现快速排序算法+编程知识+技术开发; Java实现快速排序算法+编程知识+技术...

    分别使用Java和Python实现快速排序算法.zip

    快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法.zip 快速排序:分别使用Java和Python实现快速排序算法....

    各种排序算法比较(java实现)

    `Algorithm.java`文件可能包含了这些排序算法的Java实现代码,而`常见排序算法的实现与性能比较.doc`文档则可能详细比较了这些算法的性能和适用场景。`readme.txt`文件可能是对整个项目的简要说明,包括如何运行和...

    基数排序算法 java实现

    然而,它并不适用于浮点数或非整数类型的数据,且如果数据量较小,基数排序可能不如其他简单排序算法(如快速排序或归并排序)高效。在实际应用中,我们需要根据具体情况来选择最适合的排序算法。

    各种排序算法java实现

    在提供的文件中,我们可以看到有四种经典的排序算法的Java实现:插入排序、冒泡排序、选择排序以及希尔排序。 **插入排序**: 插入排序是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据...

    JAVA冒泡排序和快速排序算法

    在JAVA中,实现这两种排序算法可以使用面向对象的特性,创建一个类如`MaopaoKuaisu.java`,在这个类中定义两个方法,分别实现冒泡排序和快速排序。类的结构可能如下: ```java public class MaopaoKuaisu { public...

    基于 Java 实现的快速排序算法(java 实现方式)

    【作品名称】:基于 Java 实现的快速排序算法(java 实现方式) 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于 ...

    排序算法JAVA实现,eclipse+txt

    在IT领域,排序算法是计算机科学中的核心概念,特别是在数据结构和算法分析中。Java作为一种广泛应用的编程语言,提供了丰富的...这个资料包中的Java实现和Eclipse工程,可以帮助开发者深入理解和实践这些排序算法。

    常见的七大排序算法Java实现.zip

    本压缩包"常见的七大排序算法Java实现.zip"包含了七种经典的排序算法在Java语言中的实现。尽管文件列表中并未明确列出每种排序算法的名称,但根据常规,这七大排序算法可能包括冒泡排序、插入排序、选择排序、快速...

    内部排序算法java实现

    这里我们将深入探讨Java实现的几种内部排序算法,包括希尔排序、快速排序、堆排序、归并排序、冒泡排序、插入排序和选择排序。 首先,希尔排序是一种基于插入排序的算法,通过将原始数组分解成多个子序列来提高效率...

    快速排序算法及其Java实现

    内容概要:本文详细介绍了快速排序算法的概念与实现方式。快速排序由英国计算机科学家Tony Hoare于1960年提出,是一种基于分治策略的高效排序方法。本文主要讲解了快速排序的工作原理,同时提供了一段详细的Java语言...

    快速排序算法实现java

    快速排序算法实现,随机输入一组数有序输出,用java语言实现

    IT面试笔试-各种排序算法Java实现

    【IT面试笔试中的排序算法Java实现】 在IT面试和笔试中,掌握各种排序算法的实现是必不可少的技能。本文将详细介绍几种经典的排序算法,并提供Java语言的实现代码,包括冒泡排序、插入排序、选择排序和快速排序。...

    常用排序算法java演示

    本文将深入探讨标题"常用排序算法java演示"中涉及的知识点,包括排序算法的原理、Java实现方式以及其在实际应用中的图形演示。 首先,让我们逐一了解几种常见的排序算法: 1. **冒泡排序(Bubble Sort)**:这是一...

    java 快速排序 折半查找的界面实现 (递归与分治法)

    总的来说,快速排序和折半查找是计算机科学中不可或缺的算法,通过递归和分治策略,可以在Java中高效地实现这些算法,并结合界面设计,为用户提供直观的交互体验。在实际项目中,理解和掌握这些算法有助于优化数据...

Global site tag (gtag.js) - Google Analytics