package com.javarush.task.task08.task0830;
import java.io.BufferedReader;
import java.io.InputStreamReader;
/* Задача по алгоритмам
Задача: Введи с клавиатуры 20 слов и выведи их в алфавитном порядке. Каждое слово - с новой строки.
Требования:
1. Программа должна выводить текст на экран.
2. Программа должна считывать значения с клавиатуры.
3. Класс Solution должен содержать три метода.
4. Метод main() должен вызывать метод sort().
5. Метод sort() должен вызывать метод isGreaterThan().
6. Выведенные слова должны быть отсортированы в алфавитном порядке.*/
public class Solution {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String[] array = new String[20];
for (int i = 0; i < array.length; i++) {
array[i] = reader.readLine();
}
// array[0] = "masda";
// array[1] = "mazda";
// array[2] = "duster";
// array[3] = "daster";
// array[4] = "bmv";
// array[5] = "bmw";
// array[6] = "acura";
// array[7] = "acurra";
// array[8] = "neksia";
// array[9] = "nexia";
sort(array);
for (String x : array) {
System.out.println(x);
}
}
public static void sort(String[] array) {
for (int i = 0; i < array.length - 1; i++)
{
for(int j = 0; j < array.length - 1; j++) {
int g = 0;
int q = 1;
if (isGreaterThan(array[j].substring(g, q), array[j + 1].substring(g, q))) {
String temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
// System.out.println(" array[" + j + "] change with array[" + (j + 1) + "]");
}
if(array[j].substring(g, q).equals(array[j+1].substring(g, q)))
{
g++;
q++;
if (isGreaterThan(array[j].substring(g, q), array[j + 1].substring(g, q)))
{
String temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
// System.out.println(" array[" + j + "] change with array[" + (j + 1) + "]");
}
}
}
}
}
//Метод для сравнения строк: 'а' больше чем 'b'
public static boolean isGreaterThan(String a, String b) {
return a.compareTo(b) > 0;
}
}
Виктор
9 уровень
???
Решен
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Roman Java Developer Expert
16 августа 2018, 13:30
А попробуй-ка вот так :)
0
Виктор
22 августа 2018, 15:05
Ну ведь я так и тестил, всё выстраивало по алфавиту(там повыше я скрин прикрепил с логом внизу, где видно, что всё отсортировалось как надо). Совершенно не понимаю в чём проблема.
Единственное может быть алгоритм выстраивания по алфавиту должен быть другой? Я ставил так если 1я буква одинаковая - тогда смотрим на 2е, 3е, 4е и т.д.
0
--------Master
22 августа 2018, 15:16
Пример выполнения:
![]()
0
Roman Java Developer Expert
22 августа 2018, 15:28решение
У тебя изначально шло:
acura
acurra
Оно так и отсортировалось (это правильно).
А теперь попробуй поставить их наоборот и посмотреть. Мой пример отличается от твоего :)
+3
Виктор
22 августа 2018, 19:32
Понял, ошибка где-то. Сорри затупил
0