我正在尝试按字母顺序对字符串中的字符进行排序。 例如:program = agmoprr 这是我的代码,我不知道如何解决它。任何提示或提示? :)
public static String quicksort(String y){
String x = "";
char[] a = new char[y.length()];
int i = 0;
int j = a.length;
if(j-i < 0) return y;
int m = i+(j-i)/2;
char b = a[m];
a[m] = a[i];
a[i] = b;
int r = i+1;
for(int s = r; s!=j; s=s+1){
if(a[s] < b)
{
char tmp = a[s];
a[s] = a[r];
a[r] = tmp;
r=r+1;
}
}
r=r-1;
a[i] = a[r];
a[r] = b;
return x = quicksort(y);
}
答案 0 :(得分:1)
首先你应该做递归,没有它你不会解决quicksort。 以下版本适合我。
public class Quicksort {
char[] myArray;
public String sort(String myStr){
if(myStr == null || myStr.length() == 0 || myStr.length() == 1){
return null;
}
int length = myStr.length();
int low =0,high = length -1;
this.myArray = myStr.toCharArray();
quickSort(low,high);
return new String(myArray);
}
public static void quickSort(int low, int high){
int i = low;
int j = high;
char tmp;
int pivot = (low+high)/2;
while (i <= j) {
while(myArray[i] < myArray[pivot]){
i++;
}
while(myArray[j] > myArray[pivot]){
j--;
}
if(i <= j) {
tmp = myArray[i];
myArray[i] = myArray[j];
myArray[j] = tmp;
i++;
j--;
}
}
if(low < j){
quickSort(low, j);
}
if(i < high){
quickSort(i,high);
}
System.out.println(myArray);
}
}