Не могу отсортировать массив строк по их длине (сортировка пузырьком)

Для массива из int все работает корректно

public static void main(String[] args) {     
       String s;
       String[] str = new String[]{"this","is","a","test","of","i","string","sort"};
        for(int a=1;a<str.length;a++)
            for(int b = str.length-1;b>=a;b--)
                if(str[b-1].compareTo(str[b])<0){
                    s=str[b-1];
                    str[b-1]=str[b];
                    str[b]=s;
                }
        for (String i : str) System.out.println(i);

    }

Программа выводит: a i is of sort string test this


Ответы (1 шт):

Автор решения: MBo

Так

if(str[b-1].compareTo(str[b])<0)

выполняет сравнение строк по умолчанию ("по алфавиту"), а вам нужно по длине

if(str[b-1].length() < str[b].length())
→ Ссылка