Guest User

Untitled

a guest
Dec 9th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.59 KB | None | 0 0
  1. package heap;
  2.  
  3. public class Heap {
  4. public int[] arr;
  5. public int size;
  6. Heap(int N){
  7. arr= new int[N];
  8. size=0;
  9. }
  10.  
  11. boolean isEmpty() {
  12. return size==0;
  13. }
  14.  
  15. void up(int num) {
  16. int par=(num-1)/2;
  17. while(par>=0 &&arr[par]<arr[num]) {
  18. int search=arr[par];
  19. arr[par]=arr[num];
  20. arr[num]=search;
  21. num=par;
  22. par=(num-1)/2;
  23. }
  24. }
  25.  
  26. public void sort(int arr[])
  27. {
  28. int n = arr.length;
  29.  
  30. // Build heap (rearrange array)
  31. for (int i = n / 2 - 1; i >= 0; i--)
  32. heapify(arr, n, i);
  33.  
  34. // One by one extract an element from heap
  35. for (int i=n-1; i>=0; i--)
  36. {
  37. // Move current root to end
  38. int temp = arr[0];
  39. arr[0] = arr[i];
  40. arr[i] = temp;
  41.  
  42. // call max heapify on the reduced heap
  43. heapify(arr, i, 0);
  44. }
  45. }
  46.  
  47. // To heapify a subtree rooted with node i which is
  48. // an index in arr[]. n is size of heap
  49. void heapify(int arr[], int n, int i)
  50. {
  51. int largest = i; // Initialize largest as root
  52. int l = 2*i + 1; // left = 2*i + 1
  53. int r = 2*i + 2; // right = 2*i + 2
  54.  
  55. // If left child is larger than root
  56. if (l < n && arr[l] > arr[largest])
  57. largest = l;
  58.  
  59. // If right child is larger than largest so far
  60. if (r < n && arr[r] > arr[largest])
  61. largest = r;
  62.  
  63. // If largest is not root
  64. if (largest != i)
  65. {
  66. int swap = arr[i];
  67. arr[i] = arr[largest];
  68. arr[largest] = swap;
  69.  
  70. // Recursively heapify the affected sub-tree
  71. heapify(arr, n, largest);
  72. }
  73. }
  74.  
  75.  
  76. void down(int num) {
  77. int left=2*num+1, right= 2*num+2, search;
  78. while((left<size&& arr[num]<arr[left])||(right>=size&&arr[num]<arr[right])) {
  79. if(right>=size||arr[left]>arr[right]) {
  80. search=arr[num];
  81. arr[num]=arr[left];
  82. arr[left]=search;
  83. num=left;
  84. }
  85. else {
  86. search=arr[right];
  87. arr[right]=arr[num];
  88. arr[num]=search;
  89. num=right;
  90.  
  91. }
  92.  
  93. left=2*num+1;
  94. right= 2*num+2;
  95.  
  96. }
  97.  
  98.  
  99. }
  100.  
  101. int search(int key) {
  102.  
  103. for(int i=0; i<size;i++) {
  104. if(arr[i]==key) {
  105. return i;
  106. }
  107. }
  108. return -1;
  109.  
  110. }
  111.  
  112.  
  113. //Delete element from heap
  114. int delete() {
  115. int tmp=arr[0];
  116. arr[0]=arr[size-1];
  117. down(0);
  118. size--;
  119. return tmp;
  120.  
  121.  
  122. }
  123.  
  124. void add(int k) {
  125. size++;
  126. arr[size-1]=k;
  127. up(size-1);
  128.  
  129.  
  130. }
  131.  
  132. void print() {
  133. System.out.println("Heap Tree: ");
  134. for(int i=0; i<size; i++) {
  135. System.out.print(arr[i]+" ");
  136. }
  137. }
  138.  
  139. void printZero() {
  140. System.out.println("Zero: "+ arr[0]);
  141. }
  142.  
  143.  
  144. void kesisim(Heap h1, Heap h2) {
  145. int arr1[]= h1.arr;
  146. int arr2[]= h2.arr;
  147. int[] kesisim= new int[arr2.length];
  148. int counter=0;
  149. for(int i=0; i<arr1.length; i++) {
  150. for(int j=0; j<arr2.length;j++) {
  151. if(arr2[j]==arr1[i]) {
  152. kesisim[counter]=arr2[j];
  153. counter++;
  154. }
  155. }
  156. }
  157.  
  158.  
  159. if(kesisim.length!=0) {
  160. System.out.println("Kesisim kumesi:");
  161. for(int i=0; i<kesisim.length;i++) {
  162. System.out.println(kesisim[i]);
  163. }
  164. }
  165.  
  166. else {
  167. System.out.println("Kesisim yok");
  168. }
  169.  
  170. }
  171.  
  172. void birlesim() {
  173.  
  174. }
  175.  
  176.  
  177. public static void main(String[] args) {
  178. Heap h= new Heap(10);
  179. Heap h1= new Heap(5);
  180. h.add(5);
  181. h.add(9);
  182. h.add(0);
  183. h.add(7);
  184. h.add(3);
  185. h.add(8);
  186. h.add(2);
  187. h.add(4);
  188. h.add(1);
  189. h.add(6);
  190.  
  191. h.sort(h.arr);
  192. h.print();
  193.  
  194.  
  195. System.out.println();
  196.  
  197. h1.add(4);
  198. h1.add(7);
  199. h1.add(6);
  200. h1.add(67);
  201. h1.add(89);
  202.  
  203. h1.sort(h1.arr);
  204. h1.print();
  205.  
  206. System.out.println();
  207.  
  208. //h.kesisim(h, h1);
  209.  
  210. }
  211.  
  212.  
  213. }
Add Comment
Please, Sign In to add comment