`
javazeke
  • 浏览: 85275 次
  • 性别: 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);

}

}

相关推荐

Global site tag (gtag.js) - Google Analytics