Java 快速排序不';不要对包含许多字母的字符串排序
我一直在尝试做一个程序,按字母顺序对字符串中的字符进行排序。 它适用于短单词,但当我尝试输入单词时,例如:abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz。它一点也不排序。 有人能帮我改进代码吗? 这是我的密码:Java 快速排序不';不要对包含许多字母的字符串排序,java,string,sorting,char,quicksort,Java,String,Sorting,Char,Quicksort,我一直在尝试做一个程序,按字母顺序对字符串中的字符进行排序。 它适用于短单词,但当我尝试输入单词时,例如:abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz。它一点也不排序。 有人能帮我改进代码吗? 这是我的密码: public class quicky{ public static void partition(char[] a,int low, int high){ int i = low; int j = high;
public class quicky{
public static void partition(char[] a,int low, int high){
int i = low;
int j = high;
char tmp;
int pivot = i+(j-i)/2;
while (i <= j) {
while(a[i] < a[pivot]){
i++;
}
while(a[j] > a[pivot]){
j--;
}
if(i <= j) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
i++;
j--;
}
}
if(low < j){
partition(a, low, j);
}
if(i < high){
partition(a, i,high);
}
}
public Character[] toCharArray( String s )
{
int len = s.length();
Character[] array = new Character[len];
for (int i = 0; i < len ; i++) {
array[i] = new Character(s.charAt(i));
}
return array;
}
public static void main(String[] args)
{
String input = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz";
String output = quicksort(input);
System.out.print(output);
}
public static String quicksort(String y)
{
int length = y.length();
int i = 0;
int j = length-1;
char[] a = y.toCharArray();
partition(a,i,j);
String x=new String(a);
return x;
}
}
快速公开类{
公共静态无效分区(char[]a,int-low,int-high){
int i=低;
int j=高;
char-tmp;
int-pivot=i+(j-i)/2;
而(我是[支点]){
j--;
}
如果(我知道字符串有一个内置的,对吧?)还有,intpivot=i+(j-i)/2;
的加分,但您不会在这里遇到32位整数溢出,那么只需使用i+j/2
=)这种情况的第一条规则:在IDE调试器(Eclipse、NetBeans等)中逐步检查代码.99%的时间你会很容易自己发现问题,并在过程中学习到一些东西。1%的时间你无法解决问题,请详细解释你在单步走中发现了什么以及你不理解什么。大约70%的时间在写下解释后,你会发现问题。在后面张贴问题也是如此呃,你已经用尽了显而易见的策略,而不是作为调查的第一线。那只是浪费每个人的时间。吉姆·加里森。当然我试过这样的方法。我试过用Jeliot做,但它崩溃了,错误是:功能还没有实现。在控制台cmd中,它起作用了。。迈克·波马克斯·卡默曼我也试过,但不起作用。是吗在这种情况下,可以使用long而不是int吗?在while(a[i])循环中,我可以变成==pivot