快速排序 quick sort

来源:互联网 发布:ubuntu安装新立得 编辑:程序博客网 时间:2024/06/10 22:24
package com.action;


public class Test {
//increase quick sort
public static void quickSort(String []strData,int left, int right){
String temp;
int mid=(left+right)/2;
int i=left, j=right;
do{
while(strData[i].compareTo(strData[mid])<0&&i<right){
i++;
}
while(strData[j].compareTo(strData[mid])>0&&left<j){
j--;
}
if(i<=j){
temp=strData[i];
strData[i]=strData[j];
strData[j]=temp;
i++;
j--;
}
}while(i<=j);

//终止条件
if(i<right){
quickSort(strData,i,right);

}

if(j>left){
quickSort(strData,left,j);

}
}

//descend quick sort
public static void descSort(String [] data,int left,int right){
int i=left;
int j=right;
int mid=(left+right)/2;
String temp;

do{
while(data[i].compareTo(data[mid])>0 && i<right){
i++;
}
while(data[j].compareTo(data[mid])<0 && j>left){
j--;
}

if(i<=j){
temp=data[i];
data[i]=data[j];
data[j]=temp;
i++;
j--;
}
}while(i<=j);

if(i<right){
descSort(data,i,right);
}

if(j>left){
descSort(data,left,j);
}

}

public static void main(String[] args){
String[] str={"2","1","5","2","5","2","1","5"};
//注意,这里调用的时候,right参数是字符数组长度减一
Test.quickSort(str, 0, str.length-1);//increase
Test.descSort(str, 0, str.length-1);//descend

for(int i=0;i<str.length;i++){
System.out.println(str[i]);
}

}

}
0 0
原创粉丝点击