Advertisement
Hiitsu

Tablica

Sep 16th, 2018
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.90 KB | None | 0 0
  1. package Tablica;
  2. import java.util.*;
  3. public class Main {
  4.  
  5.     public static void main(String args[]) {
  6.  
  7.         Tablica tablica;
  8.  
  9.         if (args.length == 0) {
  10.             System.err.println("Podaj wielkość tablicy oraz ilość wątków");
  11.             System.exit(0);
  12.         }
  13.         int wielkosc = Integer.parseInt(args[0]);
  14.         int ilosc = Integer.parseInt(args[1]);
  15.         // int wielkosc = 10000;
  16.         //int ilosc = 100;
  17.         Podzial[] podzial = new Podzial[ilosc];
  18.         Thread[] threads = new Thread[ilosc];
  19.  
  20.        tablica = new Tablica(wielkosc);
  21.         //int[] tab = tablica.getTablica();
  22.  
  23.         int poczatek = 0;
  24.         int koniec = tablica.wielkosc/ilosc;
  25.         System.out.println("tablicawielkosc: "+ tablica.wielkosc);
  26.         for (int i = 1; i <=ilosc; i++) {
  27.             podzial[i-1] = new Podzial(tablica, poczatek, koniec);
  28.             poczatek = tablica.wielkosc/ilosc*i;
  29.             koniec = poczatek + tablica.wielkosc/ilosc;
  30.             if (i == ilosc-1) {
  31.                 koniec = poczatek + tablica.wielkosc/ilosc+tablica.wielkosc%ilosc;
  32.             }
  33.         }
  34.         for (int i = 0; i < ilosc; i++) {
  35.             threads[i] = new Thread(podzial[i]);
  36.         }
  37.         for (int i = 0; i < ilosc; i++) {
  38.             threads[i].start();
  39.         }
  40.         for (int i = 0; i < ilosc; i++) {
  41.             try {
  42.                 threads[i].join();
  43.             } catch (InterruptedException exc) {
  44.                 exc.printStackTrace();
  45.             }
  46.         }
  47.  
  48.  
  49.         int[] tablica_zlaczona = new int[tablica.wielkosc];
  50.         int tmp =0;
  51.         for (int i =0;i<ilosc;i++){
  52.             int[][] tablicaw = new int[ilosc][];
  53.             tablicaw[i]=podzial[i].getTablicaw();
  54.  
  55.                 for(int j =0;j<tablica.wielkosc/ilosc;j++){
  56.                     int zmienna = tablicaw[i][j];
  57.                     tablica_zlaczona[tmp]=zmienna;
  58.                     tmp++;
  59.  
  60.  
  61.                         if(j==wielkosc/(ilosc-1)){
  62.                             for (int z =0; z< tablica.wielkosc/ilosc+tablica.wielkosc%ilosc;z++){
  63.                                 zmienna = tablicaw[i][z];
  64.                                 tablica_zlaczona[tmp]=zmienna;
  65.                                 tmp++;
  66.                             }
  67.                         }
  68.                 }
  69.         }
  70.         Arrays.sort(tablica_zlaczona);
  71.         System.out.println("Tablica po zlaczeniu: " + Arrays.toString(tablica_zlaczona));
  72.  
  73.         }
  74. }
  75. //////////////////////////////////////////////////////////////////////////////////////////////////////////////
  76. package Tablica;
  77.  
  78. import java.util.*;
  79.  
  80. public class Tablica {
  81.  
  82.     public int wielkosc;
  83.  
  84.     public int[] tablica;
  85.  
  86.     public Tablica(int wielkosc) {
  87.  
  88.         this.wielkosc = wielkosc;
  89.         tablica = new int[wielkosc];
  90.  
  91.         Random los = new Random();
  92.  
  93.         for (int i = 0; i < wielkosc; i++) {
  94.  
  95.                 int tmp = los.nextInt(100) + 1;
  96.                 tablica[i] = tmp;
  97.         }
  98.         System.out.println("Tablica: " + Arrays.toString(tablica));
  99.     }
  100.  
  101.         public int[] getTablica(){
  102.             return tablica;
  103.         }
  104.     }
  105.  
  106. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  107. package Tablica;
  108.  
  109. import java.util.*;
  110.  
  111. public class Podzial extends Thread {
  112.     int tablica[];
  113.     private int[] tablicaw;
  114.     private int poczatek;
  115.     private int koniec;
  116.  
  117.  
  118.  
  119.     public Podzial(Tablica tab, int poczatek, int koniec) {
  120.         tablica = tab.getTablica();
  121.         this.poczatek = poczatek;
  122.         this.koniec = koniec;
  123.  
  124.     }
  125.  
  126.     @Override
  127.     public void run() {
  128.  
  129.         tablicaw = Arrays.copyOfRange(tablica, poczatek, koniec);
  130.         Arrays.sort(tablicaw);
  131.         System.out.println("Tablica w watku: "+ Arrays.toString(tablicaw));
  132.  
  133.     }
  134.     public int[] getTablicaw(){
  135.         return tablicaw;
  136.     }
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement