Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. public class Main {
  2. public static void main(String[] args) {
  3. int[] array = new int[30];
  4. for (int i = 0; i < array.length; i++) {
  5. array[i] = (int) (Math.random() * 20 - 10);
  6. System.out.print(array[i] + " ");
  7. }
  8. System.out.println();
  9.  
  10. int[] gnome = gnomeSort(array);
  11. for (int value : gnome)
  12. System.out.print(value + " ");
  13. System.out.println();
  14.  
  15. for (int i = 0; i < array.length; i++) {
  16. array[i] = (int) (Math.random() * 20 - 10);
  17. System.out.print(array[i] + " ");
  18. }
  19. System.out.println();
  20.  
  21. int[] heap = heapSort(array);
  22. for (int value : heap)
  23. System.out.print(value + " ");
  24. System.out.println();
  25. }
  26.  
  27. private static int[] gnomeSort(int[] array) {//гномья
  28. int i = 1;
  29. int j = 2;
  30. while (i < array.length) {
  31. if (i <= 0 || array[i - 1] <= array[i]) {
  32. i = j;
  33. j++;
  34. } else {
  35. int tmp = array[i];
  36. array[i] = array[i - 1];
  37. array[i - 1] = tmp;
  38. i--;
  39. }
  40. }
  41. return array;
  42. }
  43.  
  44. private static void siftDown(int[] array, int root, int bottom) {
  45. int maxChild;
  46. boolean found = false;
  47. while (root * 2 <= bottom && !found) {
  48.  
  49. if (root * 2 == bottom) maxChild = root * 2;
  50. else if (array[root * 2] > array[root * 2 + 1]) maxChild = root * 2;
  51. else maxChild = root * 2 + 1;
  52.  
  53. if (array[root] < array[maxChild]) {
  54. int temp = array[root];
  55. array[root] = array[maxChild];
  56. array[maxChild] = temp;
  57. root = maxChild;
  58. } else found = true;
  59. }
  60. }
  61.  
  62. private static int[] heapSort(int[] array) {//пирамидальная
  63. for (int i = (array.length / 2) - 1; i >= 0; i--)
  64. siftDown(array, i, array.length - 1);
  65.  
  66. for (int i = array.length - 1; i >= 1; i--) {
  67. int temp = array[0];
  68. array[0] = array[i];
  69. array[i] = temp;
  70. siftDown(array, 0, i - 1);
  71. }
  72. return array;
  73. }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement