Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Ввести n строк с консоли. Упорядочить и вывести строки в порядке возрастания
- // их длин, а также (второй приоритет) значений этих их длин.
- package com.company;
- import java.util.Scanner;
- class Sort {
- public static void qSort(String[] arr) {
- quickSort(arr, 0, arr.length - 1);
- }
- private static void quickSort(String[] arr, int low, int high) {
- if (arr.length == 0) return;
- if (low >= high) return;
- // выбрать опорный элемент
- String middle = arr[low + (high - low) / 2];
- // разделить на подмассивы, который больше и меньше опорного элемента
- int i = low, j = high;
- while (i <= j) {
- while (compare(arr[i], middle) < 0) i++;
- while (compare(arr[i], middle) > 0) j--;
- if (i <= j) {//меняем местами
- String temp = arr[i];
- arr[i] = arr[j];
- arr[j] = temp;
- i++;
- j--;
- }
- }
- // вызов рекурсии для сортировки левой и правой части
- if (low < j)
- quickSort(arr, low, j);
- if (high > i)
- quickSort(arr, i, high);
- }
- private static int compare(String frst, String scnd) {
- if (frst.length() > scnd.length()) return 1;
- else if (frst.length() < scnd.length()) return -1;
- else return frst.compareTo(scnd);
- }
- }
- public class Main {
- public static void main(String[] args) {
- Scanner in = new Scanner(System.in);
- String[] lines = new String[in.nextInt()];
- for (int i = 0; i < lines.length; i++)
- lines[i] = in.nextLine();
- Sort.qSort(lines);
- for(String line : lines)
- System.out.println(line);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement