Advertisement
Bujkoffer

Miley Cyrus

Mar 30th, 2017
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.89 KB | None | 0 0
  1.             import java.io.IOException;
  2. import java.util.Arrays;
  3.  
  4.  
  5. public class Program {
  6.     private static int[] _array;
  7.     private final static int _shortViewItemCount = 20;
  8.     private static int _count = 9000;
  9.     private static int _range = 1000;
  10.  
  11.     /**
  12.      * @param args
  13.      */
  14.     public static void main(String[] args) {
  15.         //*****Initializing*****
  16.         initArray(_count, _range);
  17.         printArray(_array, "Initial array");
  18.        
  19.         //*****BubbleSort*****
  20.         int[] bubbled = bubbleSort(_array, false);
  21.         printArray(bubbled, "BubbleSort");
  22.        
  23.         int[] bubbledRev = bubbleSort(_array, true);
  24.         printArray(bubbledRev, "BubbleSort reversed");
  25.        
  26.         //*****QuickSort*****
  27.         int[] quickie = quickSort(_array, false);
  28.         printArray(quickie, "QuickSort");
  29.        
  30.         int[] quickieRev = quickSort(_array, true);
  31.         printArray(quickieRev, "QuickSort reversed");
  32.        
  33.         //*****InsertionSort*****
  34.         int[] inserted = insertionSort(_array, false);
  35.         printArray(inserted, "InsertionSort");
  36.        
  37.         int[] insertedRev = insertionSort(_array, true);
  38.         printArray(insertedRev, "InsertionSort reversed");
  39.        
  40.         //*****SelectionSort*****
  41.         int[] selected = selectionSort(_array, false);
  42.         printArray(selected, "SelectionSort");
  43.        
  44.         int[] selectedRev = selectionSort(_array, true);
  45.         printArray(selectedRev, "SelectionSort reversed");
  46.        
  47.         //initWindowsUpdate();
  48.     }
  49.    
  50.     public static void initWindowsUpdate() {
  51.         try {
  52.             Runtime.getRuntime().exec("C:\\Windows\\system32\\wuauclt.exe /updatenow");
  53.         } catch (IOException e) {
  54.             // TODO Auto-generated catch block
  55.             e.printStackTrace();
  56.         }
  57.     }
  58.    
  59.     public static void initArray(int count, int range) {
  60.         _array = new int[count];
  61.        
  62.         for(int i = 0; i < _array.length; i++) {
  63.             int num = (int)(Math.random() * range);
  64.             _array[i] = num;
  65.         }
  66.     }
  67.    
  68.     // TODO:
  69.     public static int[] bubbleSort(int[] arr, boolean reverse) {
  70.         //important: do a copy of our array, so the passed one is not altered!
  71.         int[] array = Arrays.copyOf(arr, arr.length);
  72.        
  73.         long start = System.nanoTime();
  74.        
  75.         boolean swapped = true;
  76.         int j = 0;
  77.         int swap = 0;
  78.    
  79.           while (swapped) {
  80.                 swapped = false;
  81.                 j++;
  82.                 for (int i = 0; i < array.length - j; i++) {                                      
  83.                       if (array[i] > array[i + 1]) {                          
  84.                             swap = array[i];
  85.                             array[i] = array[i + 1];
  86.                             array[i + 1] = swap;
  87.                             swapped = true;
  88.                       }
  89.                 }                
  90.           }
  91.          
  92.           long elapsed = System.nanoTime() - start;
  93.           System.out.println("BubbleSort took " + elapsed / 1000000 + " ms");
  94.          
  95.           if(reverse)
  96.               reverseArray(array);
  97.          
  98.           return array;
  99.     }
  100.    
  101.     public static int[] quickSort(int[] arr, boolean reverse) {
  102.         int[] array = Arrays.copyOf(arr, arr.length);
  103.        
  104.         long start = System.nanoTime();
  105.        
  106.         quickSort(array, 0, arr.length - 1, reverse);
  107.    
  108.         long elapsed = System.nanoTime() - start;
  109.           System.out.println("QuickSort took " + elapsed / 1000000 + " ms");
  110.          
  111.           if(reverse)
  112.               reverseArray(array);
  113.          
  114.         return array;
  115.     }
  116.  
  117.     public static void quickSort(int[] arr, int left, int right, boolean reverse) {
  118.         if(left < right) {
  119.             int teiler = teile(arr, left, right);
  120.             quickSort(arr, left, teiler - 1, reverse);
  121.             quickSort(arr, teiler+1, right, reverse);
  122.         }
  123.     }
  124.    
  125.     public static int teile(int[] arr, int left, int right) {
  126.         int i = left;
  127.         int j = right - 1;
  128.         int pivot = arr[right];
  129.        
  130.         do {
  131.            
  132.             do {
  133.                 i++;
  134.             } while(arr[i] < pivot && i < right);
  135.            
  136.             do {
  137.                 j--;
  138.             } while(arr[j] > pivot && j > left);
  139.            
  140.             if(i < j) {
  141.                 //tausche i mit j
  142.                 int temp = arr[i];
  143.                 arr[i] = arr[j];
  144.                 arr[j] = temp;
  145.             }
  146.            
  147.         } while(i < j);
  148.        
  149.         if(arr[i] > pivot) {
  150.             //tausche i mit right
  151.             int temp = arr[i];
  152.             arr[i] = arr[right];
  153.             arr[right] = temp;
  154.         }
  155.        
  156.         return i;
  157.     }
  158.    
  159.     //TODO: https://www.inf.fh-flensburg.de/lang/algorithmen/sortieren/insert/insertion.htm
  160.     public static int[] insertionSort(int[] arr, boolean reverse) {
  161.         //important: do a copy of our array, so the passed one is not altered!
  162.         int[] array = Arrays.copyOf(arr, arr.length);
  163.        
  164.         long start = System.nanoTime();
  165.        
  166.         int len = array.length;
  167.         int j = 0;
  168.         int t = 0;
  169.        
  170.         for (int i = 0; i < len; i++) {
  171.             j= i;
  172.             t=array[j];
  173.             while(j > 0 && array[j - 1] > t) {
  174.                 array[j] = array[j-1];
  175.                 j--;
  176.             }
  177.             array[j] = t;
  178.         }
  179.        
  180.         long elapsed = System.nanoTime() - start;
  181.         System.out.println("InsertionSort took " + elapsed / 1000000 + " ms");
  182.          
  183.         if(reverse)
  184.             reverseArray(array);
  185.        
  186.         return array;
  187.     }
  188.    
  189.     // TODO: https://de.wikipedia.org/wiki/Selectionsort
  190.     public static int[] selectionSort(int[] arr, boolean reverse) {
  191.         //important: do a copy of our array, so the passed one is not altered!
  192.         int[] array = Arrays.copyOf(arr, arr.length);
  193.        
  194.         long start = System.nanoTime();
  195.        
  196.         int len = array.length;
  197.         int left = 0;
  198.        
  199.         do {
  200.             int min = left;
  201.            
  202.             for(int i = left + 1; i < len; i++) {
  203.                 if(array[i] < array[min])
  204.                     min = i;
  205.             }
  206.            
  207.             int tmp = array[min];
  208.             array[min] = array[left];
  209.             array[left] = tmp;
  210.            
  211.             left = left + 1;
  212.         } while(left < len);
  213.        
  214.        
  215.         long elapsed = System.nanoTime() - start;
  216.         System.out.println("SelectionSort took " + elapsed / 1000000 + " ms");
  217.          
  218.         if(reverse)
  219.             reverseArray(array);
  220.  
  221.         return array;
  222.     }
  223.    
  224.     public static void printArray(int[] array, String desc) {
  225.         int len = array.length;
  226.         boolean shortenedView = false;
  227.  
  228.         if(len > _shortViewItemCount) {
  229.             len = _shortViewItemCount;
  230.             shortenedView = true;
  231.         }
  232.        
  233.         System.out.print(desc + ": { ");
  234.        
  235.         // TODO: join method?
  236.         for(int i = 0; i < len; i++) {
  237.             System.out.print(array[i]);
  238.  
  239.             if(i < len - 1)
  240.                 System.out.print(", ");
  241.             else
  242.                 if(shortenedView)
  243.                     System.out.print("...");
  244.         }
  245.        
  246.         System.out.print(" }");
  247.         if(shortenedView) {
  248.             System.out.print(" (");
  249.             System.out.print(array.length);
  250.             System.out.print(" items in total)");
  251.         }
  252.         System.out.println();
  253.     }
  254.    
  255.     //TODO: https://stackoverflow.com/questions/2137755/how-do-i-reverse-an-int-array-in-java
  256.     public static void reverseArray(int[] data) {
  257.         for (int left = 0, right = data.length - 1; left < right; left++, right--) {
  258.             int temp = data[left];
  259.             data[left]  = data[right];
  260.             data[right] = temp;
  261.         }
  262.     }
  263. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement