Advertisement
TomSkarsts

LD1 Beta v0.9 + comments (void main)

Feb 14th, 2016
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.56 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.util.Scanner;
  4.  
  5. public class Ld1151rdb414 {
  6.     public static void firstMethod(int[] A, int max, int min) {
  7.         /** Šķirošana ar saskaitīšanu **/
  8.  
  9.         max = A[0];
  10.         min = A[0];
  11.        
  12.         /** atrod maksimālās un minimālās vērtības **/
  13.         for (int i = 1; i < A.length; i++) {
  14.             if (A[i] > max)
  15.                 max = A[i];
  16.             if (A[i] < min)
  17.                 min = A[i];
  18.         }
  19.         int range = max - min + 1;
  20.  
  21.         int[] count = new int[range];
  22.         /** make count/frequency array for each element **/
  23.         for (int i = 0; i < A.length; i++) {
  24.             count[A[i] - min]++;
  25.         }
  26.         /** modify count so that positions in final array is obtained **/
  27.         for (int i = 1; i < range; i++) {
  28.             count[i] += count[i - 1];
  29.         }
  30.         /** modify original array **/
  31.         int j = 0;
  32.         for (int i = 0; i < range; i++) {
  33.             while (j < count[i]) {
  34.                 A[j++] = i + min;
  35.             }
  36.         }
  37.     }
  38.    
  39.    
  40.     public static void secondMethod(int[] A, int left, int right) {
  41.         /** QuickSort (Hoara metode) **/
  42.  
  43.         int medIndex = left + (right - left) / 2;
  44.         int medVert = A[medIndex];
  45.  
  46.         int i = left, j = right;
  47.  
  48.         while(i <= j) {
  49.  
  50.             while(A[i] < medVert) {
  51.                 i++;
  52.             }
  53.  
  54.             while(A[j] > medVert) {
  55.                 j--;
  56.             }
  57.  
  58.             if(i <= j) {
  59.                 int tmp = A[i];
  60.                 A[i] = A[j];
  61.                 A[j] = tmp;
  62.                 i++;
  63.                 j--;
  64.             }
  65.  
  66.             if(left < i) {
  67.                 secondMethod(A, left, j);
  68.             }
  69.  
  70.             if(right > i) {
  71.                 secondMethod(A, i, right);
  72.             }
  73.  
  74.         }
  75.     }
  76.  
  77.     public static void main(String[] args) {
  78.         int met;
  79.         String me;
  80.         System.out.println("Toms Škarsts IRDBD02 151RDB414");
  81.        
  82.         try {
  83.             BufferedReader br = new BufferedReader(
  84.                 new InputStreamReader(System.in)
  85.             );
  86.             System.out.print("method:");
  87.             me = br.readLine();
  88.             met = Integer.parseInt(me);
  89.            
  90.         }
  91.         catch(Exception e){
  92.             System.out.println("input-output error");
  93.             return;
  94.         }
  95.         /** pārbauda, lai izvēlētas tikai metodes 1 vai 2 **/
  96.         if (met > 2) {
  97.             System.out.println("input-output error (only methods: 1, 2)");
  98.             return;
  99.         }
  100.        
  101.         /** jāizmanto Scanner, lai nolasītu ievadītos datus **/
  102.         Scanner input = new Scanner(System.in);
  103.        
  104.        
  105.         System.out.print("count:");    
  106.        
  107.         /** masīvs ar datiem, kura garums = 'count' ievadītais skaits **/
  108.         int count = input.nextInt();       
  109.         int A[] = new int[count];
  110.        
  111.        
  112.         System.out.println("items:");      
  113.        
  114.         /** ievadīti elementi līdz sasniedz 'count' ievadīto skaitu **/
  115.         for(int i = 0; i < count; i++){
  116.             A[i] = input.nextInt();
  117.         }
  118.        
  119.         /** ievades beigas **/
  120.         input.close();
  121.        
  122.        
  123.         System.out.println("sorted:");
  124.        
  125.         /** metode 1 - Šķirošana ar saskaitīšanu **/
  126.         if (met==1) {
  127.            
  128.             /** nolasīti dati no metodes 1 un izvadīti dati pa vienam **/
  129.             firstMethod(A, 0, A.length - 1);         
  130.             for(int i = 0; i < A.length; i++) {
  131.                 System.out.print(A[i] + " ");
  132.             }
  133.         }
  134.        
  135.         /** metode 2 - QuickSort (Hoara metode) **/
  136.         if (met==2) {
  137.            
  138.             /** nolasīti dati no metodes 2 un izvadīti dati pa vienam **/
  139.             secondMethod(A, 0, A.length - 1);                
  140.             for(int i = 0; i < A.length; i++) {
  141.                 System.out.print(A[i] + " ");
  142.             }
  143.            
  144.         }
  145.     }
  146.  
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement