Advertisement
Zizalik

Untitled

Feb 13th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.44 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 algoritmid;
  7.  
  8. import java.util.Arrays;
  9. import java.util.Collections;
  10. import java.util.HashSet;
  11. import java.util.Random;
  12. import java.util.Scanner;
  13. import java.util.Set;
  14.  
  15. /**
  16. *
  17. * @author t166056
  18. */
  19. public class Algoritmid {
  20.  
  21. /**
  22. * @param args the command line arguments
  23. */
  24. static Integer[] arr=new Integer[100];
  25. public static void main(String[] args) {
  26.  
  27. Random rnd=new Random();
  28. int menuu;
  29. System.out.println("See on Counting sort");
  30. System.out.printf("%n1.Dublikeeritud sortimine.%n2.Mitte Dublikeeritud.%n3.Programmist v2lja");
  31. Scanner sc = new Scanner(System.in);
  32. menuu=sc.nextInt();
  33.  
  34. switch(menuu)
  35. {
  36. case 1:
  37. //With duplicates
  38.  
  39. for (int i = 0; i < arr.length; i++)
  40. {
  41. arr[i]=rnd.nextInt(100);
  42. }
  43. Counting();
  44. CountingNeg();
  45. System.out.println(Arrays.toString(arr));
  46. ;break;
  47. case 2:
  48.  
  49.  
  50. Set<Integer> set=new HashSet<>();
  51. while(set.size()!=arr.length)
  52. {
  53. set.add(rnd.nextInt(10));
  54. }
  55. arr=set.toArray(new Integer[0]);
  56. Counting();
  57. System.out.println(Arrays.toString(arr));
  58. ;break;
  59. case 3:
  60. System.out.println("Programmist on v2lja mindud, head aega!");
  61. ;break;
  62. default: System.out.println("Valige menyyst vastav valik 1-3. Valisite vale numbri.");
  63. }
  64.  
  65.  
  66. }
  67. public static void Counting()
  68. {
  69. int t=arr.length;// Muutuja T on meil massiivi nimega arr.(length = see tahendab pikkust)
  70. if(t==0)//Kui meie massiivis puuduvad arvud
  71. {
  72. System.out.println("Teie massiiv on tyhi");//prinditakse ekraanile vastav tekst
  73. }
  74. int max=arr[0],min=arr[0];// Siin anname min ja max ile v22rtused, panime vorduma nulliga selleparast, kuna nad on eraldi meetodis, siis nad peavad olema tyhjad
  75. for(int i=0;i<t;i++)//Meie tsykkel
  76. {
  77. if(arr[i]>max){max=arr[i];}//Maksimaalne
  78. if(arr[i]<min){min=arr[i];}//Minimaalne
  79. }
  80. int sorteerimata=max-min+1;//See on meie sorteerimata massiiv
  81.  
  82. int[]loe=new int[sorteerimata];
  83.  
  84. for(int i=0;i<t;i++)
  85. {
  86. loe[arr[i]-min]++;//Siin loome massiivi loendamise iga elemendi jaoks.
  87.  
  88. }
  89. for(int i=1;i<sorteerimata;i++)//Muudame meie massiivi nii, et meie masiiv oleks loplikult taidetud
  90. {
  91. loe[i]+=loe[i-1];
  92.  
  93. }
  94. int k=0;
  95. for(int i=0;i<sorteerimata;i++)//Siin muudame meie esialgset massiivi
  96. {
  97. while(k<loe[i])
  98. {
  99. arr[k++]= i+min;
  100. }
  101.  
  102. }
  103. }
  104. public static void CountingNeg()
  105. {
  106. int t=arr.length;// Muutuja T on meil massiivi nimega arr.(length = see tahendab pikkust)
  107. if(t==1)//Kui meie massiivis puuduvad arvud
  108. {
  109. System.out.println("Teie massiiv on tyhi");//prinditakse ekraanile vastav tekst
  110. }
  111. int max=arr[0],min=arr[0];// Siin anname min ja max ile v22rtused, panime vorduma nulliga selleparast, kuna nad on eraldi meetodis, siis nad peavad olema tyhjad
  112. for(int i=0;i<t;i++)//Meie tsykkel
  113. {
  114. if(arr[i]>max){max=arr[i];}//Maksimaalne
  115. if(arr[i]<min){min=arr[i];}//Minimaalne
  116. }
  117. int sorteerimata=max-min-1;//See on meie sorteerimata massiiv
  118.  
  119. int[]loe=new int[sorteerimata];
  120.  
  121. for(int i=0;i<t;i++)
  122. {
  123. //loe[i]++;//Siin loome massiivi loendamise iga elemendi jaoks.
  124.  
  125. }
  126. for(int i=1;i>sorteerimata;i--)//Muudame meie massiivi nii, et meie masiiv oleks loplikult taidetud
  127. {
  128. loe[i-1]+=loe[i-1];
  129. }
  130. int k=0;
  131. for(int i=0;i<sorteerimata;i++)//Siin muudame meie esialgset massiivi
  132. {
  133. while(k<loe[i])
  134. {
  135. arr[k++]= i+min;
  136. }
  137.  
  138. }
  139. }
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement