Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Tablica;
- import java.util.*;
- public class Main {
- public static void main(String args[]) {
- Tablica tablica;
- if (args.length == 0) {
- System.err.println("Podaj wielkość tablicy oraz ilość wątków");
- System.exit(0);
- }
- int wielkosc = Integer.parseInt(args[0]);
- int ilosc = Integer.parseInt(args[1]);
- // int wielkosc = 10000;
- //int ilosc = 100;
- Podzial[] podzial = new Podzial[ilosc];
- Thread[] threads = new Thread[ilosc];
- tablica = new Tablica(wielkosc);
- //int[] tab = tablica.getTablica();
- int poczatek = 0;
- int koniec = tablica.wielkosc/ilosc;
- System.out.println("tablicawielkosc: "+ tablica.wielkosc);
- for (int i = 1; i <=ilosc; i++) {
- podzial[i-1] = new Podzial(tablica, poczatek, koniec);
- poczatek = tablica.wielkosc/ilosc*i;
- koniec = poczatek + tablica.wielkosc/ilosc;
- if (i == ilosc-1) {
- koniec = poczatek + tablica.wielkosc/ilosc+tablica.wielkosc%ilosc;
- }
- }
- for (int i = 0; i < ilosc; i++) {
- threads[i] = new Thread(podzial[i]);
- }
- for (int i = 0; i < ilosc; i++) {
- threads[i].start();
- }
- for (int i = 0; i < ilosc; i++) {
- try {
- threads[i].join();
- } catch (InterruptedException exc) {
- exc.printStackTrace();
- }
- }
- int[] tablica_zlaczona = new int[tablica.wielkosc];
- int tmp =0;
- for (int i =0;i<ilosc;i++){
- int[][] tablicaw = new int[ilosc][];
- tablicaw[i]=podzial[i].getTablicaw();
- for(int j =0;j<tablica.wielkosc/ilosc;j++){
- int zmienna = tablicaw[i][j];
- tablica_zlaczona[tmp]=zmienna;
- tmp++;
- if(j==wielkosc/(ilosc-1)){
- for (int z =0; z< tablica.wielkosc/ilosc+tablica.wielkosc%ilosc;z++){
- zmienna = tablicaw[i][z];
- tablica_zlaczona[tmp]=zmienna;
- tmp++;
- }
- }
- }
- }
- Arrays.sort(tablica_zlaczona);
- System.out.println("Tablica po zlaczeniu: " + Arrays.toString(tablica_zlaczona));
- }
- }
- //////////////////////////////////////////////////////////////////////////////////////////////////////////////
- package Tablica;
- import java.util.*;
- public class Tablica {
- public int wielkosc;
- public int[] tablica;
- public Tablica(int wielkosc) {
- this.wielkosc = wielkosc;
- tablica = new int[wielkosc];
- Random los = new Random();
- for (int i = 0; i < wielkosc; i++) {
- int tmp = los.nextInt(100) + 1;
- tablica[i] = tmp;
- }
- System.out.println("Tablica: " + Arrays.toString(tablica));
- }
- public int[] getTablica(){
- return tablica;
- }
- }
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- package Tablica;
- import java.util.*;
- public class Podzial extends Thread {
- int tablica[];
- private int[] tablicaw;
- private int poczatek;
- private int koniec;
- public Podzial(Tablica tab, int poczatek, int koniec) {
- tablica = tab.getTablica();
- this.poczatek = poczatek;
- this.koniec = koniec;
- }
- @Override
- public void run() {
- tablicaw = Arrays.copyOfRange(tablica, poczatek, koniec);
- Arrays.sort(tablicaw);
- System.out.println("Tablica w watku: "+ Arrays.toString(tablicaw));
- }
- public int[] getTablicaw(){
- return tablicaw;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement