Facebook
From Red Macaque, 2 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 212
  1. import org.apache.commons.lang3.StringUtils;
  2.  
  3. public class Main {
  4.  
  5.     static int elementsInArray = 14;
  6.  
  7.  
  8.     private static int parentH(int i) {
  9.         if( (i/2) % 2 == 0 ) return i/2 - 1;
  10.  
  11.         return i/2;
  12.     }
  13.  
  14.     private static int parentL(int i) {
  15.         if( (i/2) % 2 == 1 ) return i/2 - 1;
  16.  
  17.         return i/2 - 2;
  18.     }
  19.  
  20.  
  21.     private static int parent(int i){
  22.         if( i % 2 == 0 ) return parentL(i);
  23.         return parentH(i);
  24.     }
  25.  
  26.  
  27.     private static int rightH(int i){
  28.         return 2*i + 1;
  29.     }
  30.  
  31.     private static int leftH(int i){
  32.         return 2*i + 3;
  33.     }
  34.  
  35.     private static int rightL(int i){
  36.         return 2*i + 4;
  37.     }
  38.  
  39.     private static int leftL(int i) {
  40.         return 2*i + 2;
  41.     }
  42.  
  43.     private static int right(int i){
  44.         if( i % 2 == 0) return rightL(i) > elementsInArray-1 ? i + 1 : rightL(i);
  45.         return rightH(i) > elementsInArray-1 ? i - 1 : rightH(i);
  46.     }
  47.  
  48.     private static int left(int i){
  49.         if(i % 2 == 0) return leftL(i) > elementsInArray-1 ? i + 1 : leftL(i);
  50.         return leftH(i) > elementsInArray-1 ? i - 1 : leftH(i);
  51.     }
  52.  
  53.  
  54.  
  55.  
  56.  
  57.     public static void main(String[] args) {
  58.         int num[] = new int[100];
  59.  
  60.  
  61.         num[0] = 1;
  62.         num[1] = 15;
  63.         num[2] = 2;
  64.         num[3] = 13;
  65.         num[4] = 133;
  66.         num[5] = 12;
  67.         num[6] = 4;
  68.         num[7] = 10;
  69.         num[8] = 5;
  70.         num[9] = 9;
  71.         num[10] = 6;
  72.         num[11] = 8;
  73.         num[12] = 7;
  74.         num[13] = 11;
  75.  
  76.         porzadkuj(num, 4);
  77.  
  78.  
  79.         for( int i = 0; i < elementsInArray; ++i){
  80.             System.out.println("rodzic dla : " + i + " to : " + parent(i));
  81.         }
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.         for( int i = 0; i < elementsInArray; ++i){
  89.             System.out.println(" element : " + i + " lewy: " + left(i) + " prawy: " + right(i));
  90.         }
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.         System.out.println(StringUtils.center("[0] " + num[0] + "   ", 50));
  101.  
  102.         System.out.println();
  103.  
  104.         System.out.print(StringUtils.center("[2] " + num[2] + " ", 27));
  105.         System.out.println(StringUtils.center("[4] " + num[4] + " ", 27));
  106.  
  107.         System.out.println();
  108.  
  109.  
  110.         System.out.print(StringUtils.center("[6] " + num[6] + "   ", 14));
  111.         System.out.print(StringUtils.center("[8] " + num[8] + "   ", 14));
  112.         System.out.print(StringUtils.center("[10] " + num[10] + "   ", 14));
  113.         System.out.println(StringUtils.center("[12] " + num[12] + "   ", 14));
  114.  
  115.         System.out.println();
  116.         System.out.println();
  117.  
  118.         System.out.print(StringUtils.center("[7] " + num[7] + "   ", 14));
  119.         System.out.print(StringUtils.center("[9] " + num[9] + "   ", 14));
  120.         System.out.print(StringUtils.center("[11] " + num[11] + "   ", 14));
  121.         System.out.println(StringUtils.center("[13] " + num[13] + "   ", 14));
  122.  
  123.         System.out.println();
  124.  
  125.         System.out.print(StringUtils.center("[3] " + num[3] + " ", 27));
  126.         System.out.println(StringUtils.center("[5] " + num[5] + " ", 27));
  127.  
  128.         System.out.println();
  129.  
  130.  
  131.         System.out.println(StringUtils.center("[1] " + num[1] + "   ", 50));
  132.  
  133.  
  134.  
  135.     }
  136.  
  137.  
  138.     private static void porzadkuj(int[] A, int i){
  139.  
  140.         if( i % 2 == 0 ){
  141.             if( parent(i) >= 0 && A[i] < A[parent(i)] ) {
  142.                 swap(A, parent(i), i);
  143.                 porzadkuj(A, parent(i));
  144.             }
  145.  
  146.             if( A[right(i)] < A[i] || A[left(i)] < A[i]){
  147.                 if( A[right(i)] < A[left(i)]) {
  148.                     swap(A, right(i), i);
  149.                     porzadkuj(A, right(i));
  150.                 }else {
  151.                     swap(A, left(i), i);
  152.                     porzadkuj(A, left(i));
  153.                 }
  154.             }
  155.         }
  156.  
  157.  
  158.  
  159.         if( i % 2 == 1){
  160.             if( parent(i) >= 0 && A[i] > A[parent(i)] ) {
  161.                 swap(A, parent(i), i);
  162.                 porzadkuj(A, parent(i));
  163.             }
  164.  
  165.             if( A[right(i)] > A[i] || A[left(i)] > A[i]){
  166.                 if( A[right(i)] > A[left(i)]) {
  167.                     swap(A, right(i), i);
  168.                     porzadkuj(A, right(i));
  169.                 }else {
  170.                     swap(A, left(i), i);
  171.                     porzadkuj(A, left(i));
  172.                 }
  173.             }
  174.         }
  175.  
  176.  
  177.     }
  178.  
  179.     private static void swap(int[] A, int i1, int i2){
  180.         int tmp = A[i1];
  181.         A[i1] = A[i2];
  182.         A[i2] = tmp;
  183.     }
  184.  
  185. }
  186.