Advertisement
Guest User

Untitled

a guest
Sep 20th, 2019
909
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.01 KB | None | 0 0
  1. // Ввести n строк с консоли. Упорядочить и вывести строки в порядке возрастания
  2. // их длин, а также (второй приоритет) значений этих их длин.
  3.  
  4. package com.company;
  5.  
  6. import java.util.Scanner;
  7.  
  8. class Sort {
  9.      public static void qSort(String[] arr) {
  10.         quickSort(arr, 0, arr.length - 1);
  11.     }
  12.  
  13.     private static void quickSort(String[] arr, int low, int high) {
  14.         if (arr.length == 0) return;
  15.  
  16.         if (low >= high) return;
  17.  
  18.         // выбрать опорный элемент
  19.         String middle = arr[low + (high - low) / 2];
  20.  
  21.         // разделить на подмассивы, который больше и меньше опорного элемента
  22.         int i = low, j = high;
  23.         while (i <= j) {
  24.             while (compare(arr[i], middle) < 0) i++;
  25.  
  26.             while (compare(arr[i], middle) > 0) j--;
  27.  
  28.             if (i <= j) {//меняем местами
  29.                 String temp = arr[i];
  30.                 arr[i] = arr[j];
  31.                 arr[j] = temp;
  32.                 i++;
  33.                 j--;
  34.             }
  35.         }
  36.  
  37.         // вызов рекурсии для сортировки левой и правой части
  38.         if (low < j)
  39.             quickSort(arr, low, j);
  40.  
  41.         if (high > i)
  42.             quickSort(arr, i, high);
  43.     }
  44.  
  45.     private static int compare(String frst, String scnd) {
  46.         if      (frst.length() > scnd.length()) return  1;
  47.         else if (frst.length() < scnd.length()) return -1;
  48.         else    return frst.compareTo(scnd);
  49.     }
  50. }
  51.  
  52. public class Main {
  53.     public static void main(String[] args) {
  54.         Scanner in = new Scanner(System.in);
  55.  
  56.         String[] lines = new String[in.nextInt()];
  57.  
  58.         for (int i = 0; i < lines.length; i++)
  59.             lines[i] = in.nextLine();
  60.  
  61.         Sort.qSort(lines);
  62.  
  63.         for(String line : lines)
  64.             System.out.println(line);
  65.     }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement