Подскажите, почему не происходит сортировки строк по алфавиту, с использованием метода Хоара?
Почему при попытке сортировке массива по алфавиту методом Хоара, массив не сортируется должным образом. Хотя я добавил вложенный цикл for для проверки всех букв в слове, если вдруг буквы с первой и т.д. окажутся одинаковыми, а так же добавил проверку indexOf на случай если в центральной строке ser есть подстрока проверяемого слова. Подскажите пожалуйста, буду премного благодарен. И еще интересно, часто ли применяется ,такого рода метод сортировки, на практике. И целесообразно ли применять его для сортировки строк по алфавиту или легче применять пузырьковую сортировку?
class Sort5 {
static void sqr (String mas[]) {
sq (mas, 0, mas.length-1);}
//метод сортровки
private static void sq (String mas[], int left, int rigth) {
int i, j, index;
String ser, temp;
i = left; j = rigth;
ser = mas[(left+rigth)/2];
do {
metka : for (;i<rigth; i++) {
for (index=0; index<mas[i].length() & index<ser.length(); index++) {
if (mas[i].charAt(index)<ser.charAt(index)) break;
else if (mas[i].charAt(index)>ser.charAt(index)) break metka;
else if (ser.indexOf(mas[i])>=0) break;}}
metka2 : for (;j>left; j--) {
for (index=0; index<mas[j].length() & index<ser.length(); index++) {
if (mas[j].charAt(index)<ser.charAt(index)) break;
else if (mas[j].charAt(index)>ser.charAt(index)) break metka2;
else if (ser.indexOf(mas[j])>=0) break;}}
if (i<=j) {
temp = mas[i];
mas[i] = mas[j];
mas[j] = temp;
i++; j--;}
} while (i<=j);
if (i<rigth) sq (mas, i, rigth);
if (j>left) sq (mas, left, j);
}
}
class Prog131 {
public static void main (String args []) {
String mas [] = {
"this", "is", "in", "can", "do", "break", "thiss",
"mother", "glowing", "glow", "best", "z", "best", "zak", "probl"};
System.out.println ("Massiv do:");
for (String i : mas)
System.out.print (i+" ");
Sort5.sqr(mas);
System.out.println ("\nMassiv posle:");
for (String i : mas)
System.out.print (i+" ");
}}