Advertisement
AgungAlfiansyah

Untitled

Apr 11th, 2018
318
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.05 KB | None | 0 0
  1. /* package whatever; // don't place package name! */
  2. import java.util.*;
  3. import java.lang.*;
  4. import java.io.*;
  5. import java.util.Random;
  6. import java.util.Scanner;  
  7.  
  8. /* Name of the class has to be "Main" only if the class is public. */
  9. class sorting
  10. {
  11.     public static void show(int [] a){
  12.         for (int i=0; i<a.length; i++) System.out.print(a[i]+" ");  
  13.        
  14.     System.out.println();
  15.     }
  16.    
  17.     public static void bubbleSort(int [] a){
  18.         int n = a.length;  
  19.         int temp = 0;  
  20.         for(int i=0; i < a.length; i++){
  21.             for(int j=1; j < (a.length-i); j++){  
  22.                 if(a[j-1] > a[j]){  
  23.                     temp = a[j-1];  
  24.                     a[j-1] = a[j];  
  25.                     a[j] = temp;  
  26.                  }  
  27.             }  
  28.         }  
  29.     }
  30.    
  31.     public static void InsertionSort(int [] a) {
  32.         int n = a.length;  
  33.         for (int j = 1; j < n; j++) {  
  34.             int key = a[j];  
  35.             int i = j-1;  
  36.             while ((i > -1) && ( a[i] > key )) {  
  37.                 a[i+1] = a[i];  
  38.                 i--;  
  39.             }  
  40.             a[i+1] = key;  
  41.         }  
  42.     }
  43.    
  44.     public static void SelectionSort(int[] a){
  45.         for (int i=0; i < a.length - 1; i++){  
  46.             int index = i;  
  47.             for (int j = i + 1; j < a.length; j++){  
  48.                 if (a[j] < a[index]){  
  49.                     index = j;
  50.                 }  
  51.             }  
  52.             int smallerNumber = a[index];  
  53.             a[index] = a[i];  
  54.             a[i] = smallerNumber;  
  55.         }  
  56.     }
  57.    
  58.     public static int Max(int[] a){
  59.         int n=a.length;
  60.         if (n==1) return a[0];
  61.         else if (n==2){
  62.             if (a[0]>a[1]) return a[0];
  63.             else return a[1];}
  64.         else{
  65.             int c = n/2;
  66.             int al[] = new int [c];
  67.             int ar[] = new int [n-c];
  68.             System.arraycopy(a, 0, al, 0, c);
  69.             System.arraycopy(a, c, ar, 0, n-c);
  70.             /*show(a);
  71.             System.out.println();
  72.             show(al);
  73.             System.out.println();
  74.             show(ar);
  75.             System.out.println();
  76.             */
  77.             int maxal=Max(al);
  78.             int maxar=Max(ar);
  79.             if (maxal>maxar) return maxal; else return maxar;
  80.         }
  81.     }
  82.    
  83.  
  84.     private static void merge(int a[], int l, int m, int r)
  85.     {
  86.         // sizes of two subarrays
  87.         int n1 = m - l + 1;
  88.         int n2 = r - m;
  89.  
  90.         /* Create temp arrays */
  91.         int L[] = new int [n1];
  92.         int R[] = new int [n2];
  93.  
  94.         /*Copy */
  95.         for (int i=0; i<n1; ++i) L[i] = a[l + i];
  96.         for (int j=0; j<n2; ++j) R[j] = a[m + 1+ j];
  97.  
  98.         /* Merge the temp arrays */
  99.         int i = 0, j = 0;
  100.  
  101.         // Initial index of merged subarry array
  102.         int k = l;
  103.         while (i < n1 && j < n2){
  104.             if (L[i] <= R[j]){
  105.                 a[k] = L[i];
  106.                 i++;
  107.             }
  108.             else{
  109.                 a[k] = R[j];
  110.                 j++;
  111.             }
  112.             k++;
  113.         }
  114.  
  115.         /* Copy remaining elements of L[] AND r[]if any */
  116.         while (i < n1){
  117.             a[k] = L[i];
  118.             i++;
  119.             k++;
  120.         }
  121.         while (j < n2){
  122.             a[k] = R[j];
  123.             j++;
  124.             k++;
  125.         }
  126.     }
  127.  
  128.     public static void MergeSort(int a[], int l, int r){
  129.         if (l < r){
  130.             int c = (l+r)/2;
  131.  
  132.             MergeSort(a, l, c);
  133.             MergeSort(a , c+1, r);
  134.             merge(a, l, c, r);
  135.         }
  136.     }
  137.  
  138.     private static int partition(int a[], int low, int high){
  139.         int pivot = a[high];
  140.         int i = (low-1); // index of smaller element
  141.         for (int j=low; j<high; j++)
  142.         {
  143.             if (a[j] <= pivot){
  144.                 i++;
  145.                 int temp = a[i];
  146.                 a[i] = a[j];
  147.                 a[j] = temp;
  148.             }
  149.         }
  150.  
  151.         // swap arr[i+1] and arr[high] (or pivot)
  152.         int temp = a[i+1];
  153.         a[i+1] = a[high];
  154.         a[high] = temp;
  155.  
  156.         return i+1;
  157.     }
  158.  
  159.      public static void QuickSort(int a[], int low, int high){
  160.         if (low < high)
  161.         {
  162.             int pi = partition(a, low, high);
  163.             QuickSort(a, low, pi-1);
  164.             QuickSort(a, pi+1, high);
  165.         }
  166.     }
  167.    
  168.    
  169.        
  170.     public static void main (String[] args) throws java.lang.Exception
  171.     {      
  172.         //generate UNsorted array
  173.         //int n=256*256*256*4;  //very big, not recomended to show
  174.         //int n=256*256;  //medium, not to show
  175.         int n=256;  //small, show it
  176.         int data[] = new int [n];
  177.         Random rand = new Random();
  178.         for (int i =0; i < n; i++) data[i]=rand.nextInt(256*256*1285);
  179.                            
  180.         boolean t=true;
  181.         int option;
  182.        
  183.         Scanner sc=new Scanner(System.in);
  184.        
  185.         while (t){
  186.           System.out.println();
  187.           System.out.println("1. Bubble Sort");
  188.           System.out.println("2. Insertion Sort");
  189.           System.out.println("3. Selection Sort");
  190.           System.out.println("4. Merge Sort");
  191.           System.out.println("5. Quick Sort");
  192.           System.out.println("6. Find Max");
  193.           System.out.println("0. show array");
  194.           System.out.println("-1. quit");
  195.           System.out.print("your choice > ");
  196.           option=sc.nextInt();
  197.        
  198.         switch(option){
  199.             case 0: show(data);
  200.                     break;
  201.             case 1: bubbleSort(data);
  202.                     break;
  203.             case 2: //show(data);
  204.                     InsertionSort(data);
  205.                     //show(data);
  206.                     break;
  207.             case 3: //show(data);
  208.                     SelectionSort(data);
  209.                     //show(data);
  210.                     break;
  211.             case 4: //show(data);
  212.                     MergeSort(data,0,data.length-1);
  213.                     //show(data);
  214.                     break;
  215.             case 5: //show(data);
  216.                     QuickSort(data,0,data.length-1);
  217.                     //show(data);
  218.                     break;
  219.             case 6: //show(data);
  220.                     System.out.println("max : " + Max(data));
  221.                     //show(data);
  222.                     break;
  223.             case -1: t=false;
  224.                     break;
  225.  
  226.                 }
  227.             }
  228.         }
  229. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement