Advertisement
kamasazi99

aiz 11 lab

Jan 6th, 2020
487
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.28 KB | None | 0 0
  1. /*
  2.  * To change this license header, choose License Headers in Project Properties.
  3.  * To change this template file, choose Tools | Templates
  4.  * and open the template in the editor.
  5.  */
  6. package lab11aiz;
  7.  
  8. import java.util.Random;
  9.  
  10. /**
  11.  *
  12.  * @author Hubert
  13.  */
  14. public class Lab11aiz extends Sort2{
  15.  
  16.     /**
  17.      * @param args the command line arguments
  18.      */
  19.     public static void main(String[] args) {
  20.        Lab11aiz sort=new Lab11aiz();
  21.        Lab11aiz Qsort =new Lab11aiz();
  22.         sort.wypelnij(10, 10);
  23.         System.out.println("===Tablica wylosowanych liczb===");
  24.         sort.wypisz();
  25.        System.out.println("===Forma kopca===");
  26.         sort.construct();
  27.         sort.wypiszDrzewo();
  28.         System.out.println("===heapSort===");
  29.         sort.heapSort();
  30.         //====================================
  31.         Qsort.wypelnij(10, 10);
  32.         System.out.println("===Tablica wylosowanych liczb===");
  33.         Qsort.wypisz();    
  34.         System.out.println("===QUICKSORT===");
  35.         Qsort.quicksort();
  36.         Qsort.wypisz();  
  37.     }
  38.  
  39.     @Override
  40.     protected int losuj(int w_max) {
  41.         Random random=new Random();
  42.        return random.nextInt(w_max)+1;
  43.     }
  44.  
  45.     @Override
  46.     public void wypelnij(int n, int wartosc_maksymalna) {
  47.         tab = new int [n];
  48.         ileT=n;
  49.         for( int i=0; i<ileT; i++) {
  50.             tab[i] = losuj(wartosc_maksymalna);
  51.         }
  52.     }
  53.  
  54.     @Override
  55.     public void wypisz() {
  56.         for(int i=0;i<ileT;i++)
  57.             System.out.println("Tablica["+i+"]= "+tab[i]);
  58.    
  59.     }
  60.  
  61.     @Override
  62.     public void wypiszDrzewo() {
  63.          int p = 0;
  64.         while (Math.pow(2, p) <= ileT) {
  65.             p++;
  66.         }
  67.         p--;
  68.         for (int i = 0; i < p + 1; i++) {
  69.             int k = p - i;
  70.             if (k != 0) {
  71.                 for (int b = 0; b <= Math.pow(2, k) - 2; b++) {
  72.                     System.out.print("   ");
  73.                 }
  74.  
  75.             }
  76.  
  77.             for (int j = (int) Math.pow(2, i) - 1; j < (int) Math.pow(2, i + 1) - 1; j++) {
  78.                 if (j < ileT) {
  79.                     System.out.print(tab[j] + " ");
  80.  
  81.                     for (int m = 0; m < Math.pow(2, p - i + 1); m++) {
  82.                         System.out.print("  ");
  83.                     }
  84.                     for (int b = 0; b <= Math.pow(2, k) - 2; b++) {
  85.                         System.out.print("  ");
  86.                     }
  87.  
  88.                 }
  89.             }
  90.             System.out.println("");
  91.         }
  92.     }
  93.     @Override
  94.     protected void downHeap(int i) {
  95. int v, j;
  96.         v= tab[i];
  97.         while(i <= ((ileT-1)/2)) {
  98.             j = 2*i;
  99.             if(j<ileT) {
  100.                 if(tab[j]<tab[j+1]) {
  101.                     j = j+1;
  102.                 }
  103.             }
  104.             if(v >= tab[j]) break;
  105.             tab[i] = tab[j];
  106.             i=j;
  107.         }
  108.         tab[i]=v;
  109.  
  110.     }
  111.  
  112.     @Override
  113.     protected void construct() {
  114.         for (int i = ((ileT - 1) / 2); i >= 0; i--) {
  115.             downHeap(i);
  116.         }
  117.     }
  118.  
  119.     @Override
  120.     protected int deleteMax() {
  121.         int tmp = tab[0];
  122.         tab[0] = tab[ileT - 1];
  123.         ileT--;
  124.         downHeap(0);
  125.         return tmp;
  126.  
  127.  
  128.     }
  129.  
  130.     @Override
  131.     protected void heapSort() {
  132.         int m = ileT;
  133.         construct();
  134.         for(int i = m-1; i>=1; i--) {
  135.             tab[i] = deleteMax();
  136.             wypiszDrzewo();
  137.             System.out.println("===========nastepne przejscie===");
  138.         }
  139.         ileT = m;
  140.     }
  141.  
  142.     @Override
  143.     protected void quicksort() {
  144.        quicksort(0, ileT - 1);
  145.     }
  146. public void quicksort(int x,int y){
  147. int i = x, j = y, v, pomocnicza;
  148.  v = tab[j];
  149.  do{
  150.              while (tab[i] < v) {
  151.                 i++;
  152.             }
  153.             while (v < tab[j]) {
  154.                 j--;
  155.             }
  156.     if(i<=j)
  157.     {
  158.     pomocnicza=tab[i];
  159.     tab[i]=tab[j];
  160.     tab[j]=pomocnicza;
  161.     i++;j--;
  162.     }
  163.  }while(i <= j);
  164.         if (x < j) {
  165.             quicksort(x, j);
  166.         }
  167.         if (i < y) {
  168.             quicksort(i, y);
  169.         }
  170.  
  171. }
  172.     @Override
  173.     protected void countsort() {
  174.         throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
  175.     }
  176.    
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement