Advertisement
Zizalik

Algoritmid

Feb 7th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.51 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 algorithms1_rugam;
  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 Algorithms1_Rugam {
  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. do{
  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. System.out.println(Arrays.toString(arr));
  45. ;break;
  46. case 2:
  47.  
  48.  
  49. Set<Integer> set=new HashSet<>();
  50. while(set.size()!=arr.length)
  51. {
  52. set.add(rnd.nextInt(10));
  53. }
  54. arr=set.toArray(new Integer[0]);
  55. Counting();
  56. System.out.println(Arrays.toString(arr));;break;
  57. case 3:
  58. System.out.println("Programmist on v2lja mindud, head aega!");
  59. ;break;
  60. default: System.out.println("Valige menyyst vastav valik 1-3. Valisite vale numbri.");
  61. }
  62. }while(menuu!=3);
  63.  
  64. }
  65. public static void Counting()
  66. {
  67. int t=arr.length;// Muutuja T on meil massiivi nimega arr.(length = see tahendab pikkust)
  68. if(t==0)//Kui meie massiivis puuduvad arvud
  69. {
  70. System.out.println("Teie massiiv on tyhi");//prinditakse ekraanile vastav tekst
  71. }
  72. 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
  73. for(int i=0;i<t;i++)//Meie tsykkel
  74. {
  75. if(arr[i]>max){max=arr[i];}//Maksimaalne
  76. if(arr[i]<min){min=arr[i];}//Minimaalne
  77. }
  78. int sorteerimata=max-min+1;//See on meie sorteerimata massiiv
  79.  
  80. int[]loe=new int[sorteerimata];
  81.  
  82. for(int i=0;i<t;i++)
  83. {
  84. loe[arr[i]-min]++;//Siin loome massiivi loendamise iga elemendi jaoks.
  85.  
  86. }
  87. for(int i=1;i<sorteerimata;i++)//Muudame meie massiivi nii, et meie masiiv oleks loplikult taidetud
  88. {
  89. loe[i]+=loe[i-1];
  90.  
  91. }
  92. int k=0;
  93. for(int i=0;i<sorteerimata;i++)//Siin muudame meie esialgset massiivi
  94. {
  95. while(k<loe[i])
  96. {
  97. arr[k++]= i+min;
  98. }
  99.  
  100. }
  101. }
  102. public static void CountingNeg()
  103. {
  104. int t=arr.length;// Muutuja T on meil massiivi nimega arr.(length = see tahendab pikkust)
  105. if(t==0)//Kui meie massiivis puuduvad arvud
  106. {
  107. System.out.println("Teie massiiv on tyhi");//prinditakse ekraanile vastav tekst
  108. }
  109. 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
  110. for(int i=0;i<t;i++)//Meie tsykkel
  111. {
  112. if(arr[i]>max){max=arr[i];}//Maksimaalne
  113. if(arr[i]<min){min=arr[i];}//Minimaalne
  114. }
  115. int sorteerimata=max-min-1;//See on meie sorteerimata massiiv
  116.  
  117. int[]loe=new int[sorteerimata];
  118.  
  119. for(int i=0;i<t;i++)
  120. {
  121. //loe[i]++;//Siin loome massiivi loendamise iga elemendi jaoks.
  122.  
  123. }
  124. for(int i=1;i>sorteerimata;i--)//Muudame meie massiivi nii, et meie masiiv oleks loplikult taidetud
  125. {
  126. loe[i-1]+=loe[i];
  127. }
  128. int k=0;
  129. for(int i=0;i<sorteerimata;i++)//Siin muudame meie esialgset massiivi
  130. {
  131. while(k<loe[i])
  132. {
  133. arr[k++]= i+min;
  134. }
  135.  
  136. }
  137. }
  138. }
  139.  
  140.  
  141.  
  142. http://www.sanfoundry.com/java-program-implement-counting-sort/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement