Guest User

Untitled

a guest
Dec 16th, 2020
31
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.company;
  2. import java.util.ArrayList;
  3. import java.util.Random;
  4. import java.util.Scanner;
  5.  
  6. public class W3 {
  7.  
  8.         public static void print(int[] arr)
  9.         {
  10.             System.out.println("\n--------------------------\n");
  11.  
  12.             for (int i = 0; i < arr.length; i++) {
  13.                 if ((i % 10) == 0) System.out.print("\n");
  14.  
  15.                 System.out.print(arr[i]);
  16.                 System.out.print(" ");
  17.  
  18.             }
  19.             System.out.println("\n--------------------------\n");
  20.         }
  21.  
  22.         public static int[] gen(int[] arr)
  23.         {
  24.             Random rand = new Random();
  25.  
  26.             for (int i = 0; i < arr.length; i++) {
  27.                 int f = rand.nextInt(5);
  28.                 arr[i] = f;
  29.             }
  30.             return arr;
  31.         }
  32.  
  33.  
  34.         public static void w3() {
  35.  
  36.             Scanner in = new Scanner(System.in);
  37.  
  38.             int[] arr = new int[100];
  39.  
  40.             gen(arr);
  41.  
  42.             print(arr);
  43.  
  44.             System.out.print("Введите колчество побочных потоков: ");
  45.             int num_of_threads = in.nextInt();
  46.  
  47.             ArrayList<SortThread> sortThreads = new ArrayList<>();
  48.  
  49.  
  50.             for (int i = 0; i < num_of_threads; i++)
  51.             {
  52.                 System.out.print("\nВведите шаг: ");
  53.                 int hop = in.nextInt();
  54.  
  55.                 System.out.print("\nВведите c какого элемента начать сортировку: ");
  56.                 int num = in.nextInt();
  57.  
  58.                 System.out.println("\nСколько элементов отсортировать: ");
  59.                 int num2 = in.nextInt();
  60.  
  61.                 SortThread st = new SortThread(arr, hop, num, num2);
  62.  
  63.                 sortThreads.add(st);
  64.             }
  65.  
  66.             for (int i = 0; i < sortThreads.size(); i++) {
  67.                 System.out.println("Запуск потока №" + i+1);
  68.                 sortThreads.get(i).start();
  69.             }
  70.  
  71.             try {
  72.                 Thread.sleep(800);
  73.             } catch (InterruptedException e) {
  74.                 e.printStackTrace();
  75.             }
  76.             print(arr);
  77.            
  78.         }
  79. }
  80.  
  81.  
  82. package com.company;
  83.    public class SortThread extends Thread
  84.    {
  85.         int arr[];
  86.         int hop,num, num2;
  87.  
  88.         public SortThread(int[] arr, int hop, int num, int num2)
  89.         {
  90.             this.arr = arr;
  91.             this.hop = hop;
  92.             this.num = num;
  93.             this.num2 = num2;
  94.         }
  95.  
  96.         public void run(){
  97.             System.out.println("\nStart sorting... \n");
  98.             sort(arr,hop,num,num2);
  99.             System.out.println("\nEnd sorting...\n");
  100.         }
  101.  
  102.         public static void swap(int[] arr,int i,int j)
  103.         {
  104.             int t = arr[i];
  105.             arr[i] = arr[j];
  106.             arr[j] = t;
  107.         }
  108.  
  109.         public static int[] sort(int[] arr,int hop, int num, int num2){
  110.             int h = 1;
  111.             while (h < arr.length)
  112.                 h = h + hop;
  113.  
  114.             while (h >= 1) {
  115.                 hSort(arr, h, num, num2);
  116.                 h = h / 3;
  117.             }
  118.          return arr;
  119.         }
  120.  
  121.         public static void hSort(int[] arr,int h,int num, int num2){
  122.             int l = arr.length;
  123.             for (int i = num; i < num2+num; i++) {
  124.                 for (int j = i; j >= h ; j = j - h) {
  125.                     if (arr[j] < arr[j-h])
  126.                         swap(arr,j,j-h);
  127.                     else break;
  128.                 }
  129.             }
  130.         }
  131.  
  132.     }
  133.  
  134.  
  135.  
  136.  
RAW Paste Data