Advertisement
MarouaneTheViper

Untitled

Apr 3rd, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.50 KB | None | 0 0
  1.  
  2. package heap;
  3.  
  4. import java.awt.Color;
  5. import java.awt.event.ActionEvent;
  6. import java.awt.event.ActionListener;
  7. import java.util.ArrayList;
  8. import java.util.Collections;
  9. import java.util.List;
  10. import javax.swing.JLabel;
  11. import java.util.Random;
  12. import java.util.RandomAccess;
  13. import java.util.stream.Collectors;
  14. import java.util.stream.IntStream;
  15.  
  16. public class Maxheap
  17. {
  18. private int[] Heap = new int[32];
  19. private int[] HeapCopy = new int[32];
  20. private int size;
  21. private int maxsize=31;
  22. List<JLabel> LabelList = new ArrayList<JLabel>();
  23. Illustration ill = new Illustration(this);
  24.  
  25. public Maxheap()
  26. {
  27.  
  28. }
  29.  
  30. private void importLabels()
  31. {
  32. LabelList = ill.sendLabels();
  33. }
  34.  
  35. public void initialiseArray()
  36. {
  37. IntStream range = IntStream.rangeClosed(0, 99);
  38. List<Integer> integers = range.boxed().collect(Collectors.toList());
  39. Collections.shuffle(integers);
  40.  
  41. for(int i=0; i<31;i++)
  42. {
  43. Heap[i] = Integer.parseInt(Integer.toString(integers.get(i)));
  44. }
  45.  
  46. for (int i=0; i<Heap.length; i++)
  47. HeapCopy[i] = Heap[i];
  48.  
  49. for(int i=0;i<31;i++)
  50. {
  51. LabelList.get(i).setText(Integer.toString(Heap[i]));
  52. }
  53.  
  54. ill.displayHeapContent(Heap);
  55. ill.writeLog("New Array generated!");
  56. }
  57.  
  58. public void restoreArray()
  59. {
  60. for(int i = 30; i>=0;i--)
  61. {
  62. LabelList.get(i).setForeground(Color.white);
  63. }
  64.  
  65. for (int i=0; i<Heap.length; i++)
  66. Heap[i] = HeapCopy[i];
  67.  
  68. for(int i=0;i<31;i++)
  69. {
  70. LabelList.get(i).setText(Integer.toString(Heap[i]));
  71. }
  72. ill.displayHeapContent(Heap);
  73. ill.writeLog("Array Restored!");
  74. }
  75.  
  76. private int parent(int pos)
  77. {
  78. return pos / 2;
  79. }
  80. private int leftChild(int pos)
  81. {
  82. return (2 * pos) + 1;
  83. }
  84. private int rightChild(int pos)
  85. {
  86. return (2 * pos) + 2;
  87. }
  88.  
  89. private boolean isLeaf(int pos)
  90. {
  91. if (pos >= (size / 2) && pos <= size) {
  92. return true;
  93. }
  94. return false;
  95. }
  96.  
  97. private void swap(int fpos, int spos)
  98. {
  99. System.out.println("Swap num1: " + Heap[fpos] + "\tnum2:" + Heap[spos]);
  100. int tmp;
  101. tmp = Heap[fpos];
  102. Heap[fpos] = Heap[spos];
  103. Heap[spos] = tmp;
  104. ill.writeLog("Swap num1: " + Heap[fpos] + "\t num 2: " + Heap[spos]);
  105. }
  106.  
  107. private void swapLabels(int pos1, int pos2) throws InterruptedException
  108. {
  109. ill.update(ill.getGraphics());
  110. for(int i = 30; i>=0;i--)
  111. {
  112. LabelList.get(i).setForeground(Color.white);
  113. }
  114. ill.colorSwap(pos1, pos2, LabelList);
  115. String temp = LabelList.get(pos1).getText();
  116. LabelList.get(pos1).setText(LabelList.get(pos2).getText());
  117. LabelList.get(pos2).setText(temp);
  118. Thread.sleep(000);
  119. }
  120.  
  121. public void updateHeap()
  122. {
  123. for(int i=0;i<31;i++)
  124. {
  125. LabelList.get(i).setText(Integer.toString(Heap[i]));
  126. }
  127. }
  128.  
  129. private void maxHeapify(int pos, int heapsize) throws InterruptedException
  130. {
  131.  
  132. int l = leftChild(pos);
  133. int r = rightChild(pos);
  134. int largest=pos;
  135. if (l < heapsize && Heap[l] > Heap[pos])
  136. largest = l;
  137. if (r < heapsize && Heap[r] > Heap[largest])
  138. largest = r;
  139. if (largest != pos)
  140. {
  141. swap(pos,largest);
  142. swapLabels(pos,largest);
  143. maxHeapify(largest, heapsize);
  144. }
  145. ill.displayHeapContent(Heap);
  146. }
  147.  
  148. public void heapify() throws InterruptedException
  149. {
  150. for(int i = 31/2 ; i>=0 ; i--)
  151. {
  152. maxHeapify(i,31);
  153. }
  154. }
  155.  
  156. public void Heapsort() throws InterruptedException
  157. {
  158. System.out.println("Heap Sort!");
  159. for(int i = 30; i>=1;i--)
  160. {
  161. swap(0,i);
  162. swapLabels(0,i);
  163. maxHeapify(0,i);
  164. }
  165. ill.displayHeapContent(Heap);
  166. }
  167.  
  168. private void merge(int beg, int mid, int end)
  169. {
  170. int l = mid - beg + 1;
  171. int r = end - mid;
  172.  
  173. int LeftArray[] = new int [l];
  174. int RightArray[] = new int [r];
  175.  
  176. for (int i=0; i<l; ++i)
  177. LeftArray[i] = Heap[beg + i];
  178.  
  179. for (int j=0; j<r; ++j)
  180. RightArray[j] = Heap[mid + 1+ j];
  181.  
  182. int i = 0, j = 0;
  183. int k = beg;
  184. while (i<l&&j<r)
  185. {
  186. if (LeftArray[i] >= RightArray[j])
  187. {
  188. Heap[k] = LeftArray[i];
  189. i++;
  190. }
  191. else
  192. {
  193. Heap[k] = RightArray[j];
  194. j++;
  195. }
  196. k++;
  197. }
  198. while (i<l)
  199. {
  200. Heap[k] = LeftArray[i];
  201. i++;
  202. k++;
  203. }
  204. while (j<r)
  205. {
  206. Heap[k] = RightArray[j];
  207. j++;
  208. k++;
  209. }
  210. }
  211.  
  212. public void Mergesortcast()
  213. {
  214. ill.writeLog("\nMerge Sort!\n");
  215. System.out.println("Merge Sort!");
  216. Mergesort(0,30);
  217. updateHeap();
  218. ill.displayHeapContent(Heap);
  219. }
  220.  
  221. private void Mergesort(int beg, int end)
  222. {
  223. if (beg<end)
  224. {
  225. int mid = (beg+end)/2;
  226. Mergesort(beg, mid);
  227. Mergesort(mid+1, end);
  228. merge(beg, mid, end);
  229. }
  230. }
  231.  
  232. public void Insertionsort() throws InterruptedException
  233. {
  234. ill.writeLog("\nInsertion Sort!\n");
  235. System.out.println("Insertion Sort!");
  236. int n = Heap.length;
  237. for (int i = 1; i < n; ++i) {
  238. int key = Heap[i];
  239. int j = i - 1;
  240. while (j >= 0 && Heap[j] < key) {
  241. swap(j+1,j);
  242. swapLabels(j+1,j);
  243. j = j - 1;
  244. }
  245. Heap[j + 1] = key;
  246. updateHeap();
  247. ill.displayHeapContent(Heap);
  248. }
  249. }
  250.  
  251. public void Selectionsort() throws InterruptedException
  252. {
  253. ill.writeLog("\nSelection Sort!\n");
  254. System.out.println("Selection Sort!");
  255. int n = Heap.length;
  256. for (int i = 0; i < n-1; i++)
  257. {
  258. int max = i;
  259. for (int j = i+1; j < n; j++)
  260. if (Heap[j] > Heap[max])
  261. max = j;
  262. swap(i,max);
  263. swapLabels(i,max);
  264. }
  265. updateHeap();
  266. ill.displayHeapContent(Heap);
  267. }
  268.  
  269. public void bubbleSort() throws InterruptedException
  270. {
  271. ill.writeLog("\nBubble Sort!\n");
  272. System.out.println("Bubble Sort!");
  273. int n = Heap.length;
  274. for (int i = 0; i < n-1; i++)
  275. for (int j = 0; j < n-i-1; j++)
  276. if (Heap[j] < Heap[j+1])
  277. {
  278. swap(j,j+1);
  279. swapLabels(j,j+1);
  280. }
  281. updateHeap();
  282. ill.displayHeapContent(Heap);
  283. }
  284.  
  285. private int partition(int p, int r) throws InterruptedException {
  286. int x = Heap[p];
  287. int i = p;
  288. int j = r;
  289. while (true) {
  290.  
  291. while (Heap[i] > x) {
  292. i++;
  293. }
  294.  
  295. while (Heap[j] < x) {
  296. j--;
  297. }
  298. if (i < j) {
  299. swap(i,j);
  300. swapLabels(i,j);
  301. } else {
  302. return j;
  303. }
  304. }
  305. }
  306. public void Quicksortcast() throws InterruptedException
  307. {
  308. ill.writeLog("\nQuick Sort!\n");
  309. System.out.println("Quick Sort!");
  310. Quicksort(0,30);
  311. updateHeap();
  312. ill.displayHeapContent(Heap);
  313. }
  314.  
  315. public void Quicksort(int low, int high) throws InterruptedException
  316. {
  317. if (low < high)
  318. {
  319. int pi = partition(low, high);
  320. Quicksort(low, pi-1);
  321. Quicksort(pi+1, high);
  322. }
  323. }
  324.  
  325. public static void main(String[] args) {
  326. Maxheap heap = new Maxheap();
  327. heap.importLabels();
  328. }
  329. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement