`
javazeke
  • 浏览: 86962 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Java实现快排的算法

阅读更多

Java实现快排的算法

public class QuickSort {
/**
* 快速排序
* @param strDate
* @param left
* @param right
*/
public void quickSort(String[] strDate,int left,int right){
String middle,tempDate;
int i,j;
i=left;
j=right;
middle=strDate[(i+j)/2];
do{
while(strDate[i].compareTo(middle)<0&& i<right)
i++; //找出左边比中间值大的数
while(strDate[j].compareTo(middle)>0&& j>left)
j--; //找出右边比中间值小的数
if(i<=j){ //将左边大的数和右边小的数进行替换 
tempDate=strDate[i];
strDate[i]=strDate[j];
strDate[j]=tempDate;
i++;
j--;
}
}while(i<=j); //当两者交错时停止

if(i<right){
quickSort(strDate,i,right);//从
}
if(j>left){
quickSort(strDate,left,j);
}
}
/**
  * @param args
  */
public static void main(String[] args){
String[] strVoid=new String[]{"11","66","22","0","55","22","0","32"};
QuickSort sort=new QuickSort();
sort.quickSort(strVoid,0,strVoid.length-1);
for(int i=0;i<strVoid.length;i++){
System.out.println(strVoid[i]+" ");
}
}


}

 

2
1
分享到:
评论
2 楼 zjb_0308 2010-09-26  
如果LZ有兴趣可以加我的QQ一起讨论一下更好的解决方法
1 楼 zjb_0308 2010-09-26  
用自带的compareTo方法会出现问题的,compareTo方法不能对位数不一样的字符进行正确比较,比如把其中一个0改为3的话会出现错误,所以可以自己编写一个compareTo的方法,一下是我的改动
public class QuickSort {
/**
* 快速排序
* @param strDate
* @param left
* @param right
*/
public void quickSort(String[] strDate,int left,int right){
String middle,tempDate;
int i,j;
i=left;
j=right;
middle=strDate[(i+j)/2];
do{
while(compareTo(strDate[i],middle)<0&& i<right)
i++; //找出左边比中间值大的数
while(compareTo(strDate[j],middle)>0&& j>left)
j--; //找出右边比中间值小的数
if(i<=j){ //将左边大的数和右边小的数进行替换
tempDate=strDate[i];
strDate[i]=strDate[j];
strDate[j]=tempDate;
i++;
j--;
}
}while(i<=j); //当两者交错时停止

if(i<right){
quickSort(strDate,i,right);//从
}

if(j>left){
quickSort(strDate,left,j);
}
}

public static void main(String[] args){

String[] strVoid=new String[]{"11","66","22","3","55","22","0","32"};

QuickSort sort=new QuickSort();

sort.quickSort(strVoid,0,strVoid.length-1);

for(int i=0;i<strVoid.length;i++){
System.out.println(strVoid[i]+" ");
}
}
public int compareTo(String thisStr,String anotherString){

return  Integer.parseInt(thisStr)-Integer .parseInt(anotherString);

}

}

相关推荐

    快排算法java

    在Java中,快速排序广泛应用于对象排序,而对于基本数据类型则更倾向于使用其他算法,如双轴快速排序或插入排序。 ### 快速排序的基本思想 快速排序的基本思想是将待排序数组分为两个部分:一部分的所有元素都比另...

    java编写的快排算法

    在Java编程中,我们可以使用递归的方式来实现这个算法。以下是关于Java实现快速排序的详细解释: 1. **分治法**:快速排序的核心在于分治,即将一个大数组分为两个子数组,然后对这两个子数组分别进行排序。在Java...

    算法课程设计——分治法(java实现)

    算法课程设计——分治法(java实现) 本课程设计报告的主要内容是对分治法的详细分析和讲解,并使用 Java 语言对其进行实现。分治法是一种经典的排序算法,它的主要思想是将问题分解为两个子序列,然后对子序列进行...

    java 数据结果和算法

    此外,书中可能还会介绍如何使用Java集合框架中的类(如ArrayList、LinkedList、HashMap等)来实现各种数据结构,以及如何运用这些工具类来简化算法实现。 总之,掌握Java数据结构和算法对于任何Java开发者来说都是...

    Java实现所有算法(代码)

    在编程领域,Java是一种广泛应用的高级编程语言,尤其在企业级应用、大数据处理以及算法实现等方面有着广泛的用途。本资源“Java实现所有算法(代码)”是一个专为教育目的设计的项目,它提供了用Java语言编写的各类...

    排序算法包(堆排序,快排等各种排序算法)

    排序算法包 各种排序算法 java源 堆排序,快排等各种排序算法

    TFIDF算法java实现

    - 提供的jar包可能是预编译的TF-IDF算法实现,可以方便地在Java项目中直接引用,而无需关心底层的实现细节。通过添加依赖或引入类路径,可以快速在自己的程序中调用TF-IDF计算功能。 6. **TF-IDF应用** - TF-IDF...

    策略模式 java 实现冒泡、快排、归并三种算法

    在Java中,通过定义接口或抽象类来封装一系列的算法,并将每个算法都封装为一个类,使得它们可以互换,从而使程序可以根据不同场景选择不同的算法。在这个场景中,我们将使用策略模式来实现冒泡排序、快速排序和归并...

    Java实现的快速排序和随机快排

    快速排序是一种高效的排序算法,由英国计算机科学家C.A.R. Hoare在1960年提出。它的基本思想是分治法(Divide and Conquer)。在这个Java实现中,我们将会探讨快速排序以及其变种——随机化快速排序。 1. **快速...

    Java排列组合算法分析和代码实现

    本资源深入讲解了如何在Java中实现这两种基本算法。 首先,让我们来理解排列(Permutation)的概念。排列是指从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列的所有可能的方法。在Java中,递归是一种...

    常用排序算法的java实现(冒泡、插入、选择、希尔、归并、快排)

    本篇文章将详细讲解标题中提到的六种常见排序算法的Java实现。 1. **冒泡排序**:冒泡排序是最基础的排序算法之一,它通过不断交换相邻的逆序元素来逐渐将较大的元素“浮”到数组的前端。在Java中,冒泡排序的基本...

    基于Java的车间调度智能排产集成框架设计源码

    总的来说,基于Java的车间调度智能排产集成框架设计源码为制造型企业提供了一种高效、灵活的生产管理工具,通过智能排产算法优化生产流程,提升生产效率,降低生产成本。对于学习者来说,深入研究此框架,不仅可以...

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

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

    Java数据结构和算法

    ### Java数据结构和算法知识点详解 #### 一、数组与简单排序 ##### 数组 **概念**: 数组是一种数据结构,用于存储具有相同...以上是Java数据结构和算法的基础知识点,掌握这些内容对于理解和实现高效的算法至关重要。

    几种经典的排序算法java实现

    * 快排:O(n*logn);如果是从小到大排序; * 思想:选一个关键数据,将数组分成以关键数据分割的独立两个子数组;比关键数据小的在左边,大的在右边,然后递归; * @author wangchao */ public class Kuaipai { ...

    Algorithm_hash归并快排算法_

    标题中的"Algorithm_hash归并快排算法_"表明我们要讨论的是一个与哈希(Hash)合并和快速排序(Quick Sort)算法相关的编程实现。哈希合并通常用于数据处理和排序,而快速排序是一种高效的排序算法,它利用了分治的...

    用蛮力法实现选择排序,冒泡排序程序;用减治法实现插入排序;分治法应用-快排,合并排序,0-1背包问题;Prim算法求最小生成树。伪代码以及java代码实现

    分治法可以用于快排、合并排序、0-1背包问题等问题。 Prim 算法求最小生成树也是一种常见的应用。 四、实验结果 在实验中,我们使用 Java 语言实现了选择排序、冒泡排序和插入排序的算法,并对其进行了测试。实验...

    三种排序算法java实现

    除了这些核心算法实现,还有一些辅助类和文件。例如,`ThreeSortAlgo.java`可能是用来测试这三种排序算法的主程序,它可能包含了调用不同排序方法的逻辑。`Sort.java`可能包含了一些通用的排序接口或抽象类,定义了...

    枚举归并快排并行算法实现

    枚举排序、快速排序、归并排序的串行算法及对应的简单并行算法,java实现,可自由选择线程数。代码仅供参考。

    QuickSort算法java实现

    快速排序算法java实现,此程序所排序数组在程序中给出,没有输入。

Global site tag (gtag.js) - Google Analytics