Advertisement
Guest User

QuickSort vs. QuickSortDeluxe

a guest
Nov 18th, 2019
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.62 KB | None | 0 0
  1. import java.io.*;
  2. import java.util.*;
  3. import java.lang.*;
  4.  
  5. public class QuickSort {
  6.     public static void bubbleSort(Integer[] arr, int n) {
  7.         for (int i = 0; i < n - 1; i++)
  8.             for (int j = 0; j < n - i - 1; j++)
  9.                 if (arr[j] > arr[j + 1]) {
  10.                     swap(arr, j, j+1);
  11.                 }
  12.     }
  13.  
  14.     public static void quickSortDeluxe(Integer[] arr, int p, int r) {
  15.         if (arr.length < 200) {bubbleSort(arr, r);}
  16.         else if (p < r) {
  17.             int q = partition(arr, p, r);
  18.             quickSort(arr, p, q);
  19.             quickSort(arr, q + 1, r);
  20.         }
  21.     }
  22.  
  23.     public static void quickSort(Integer[] arr, int p, int r) {
  24.         if (p < r) {
  25.             int q = partition(arr, p, r);
  26.             quickSort(arr, p, q);
  27.             quickSort(arr, q + 1, r);
  28.         }
  29.     }
  30.  
  31.     public static int partition(Integer[] arr, int p, int r) {
  32.         int x = arr[r];
  33.         int i = p;
  34.         for (int j = 0; j < r; j++) {
  35.             if (arr[j] < x) {
  36.                 swap(arr, i, j);
  37.                 i++;
  38.             }
  39.         }
  40.         int temp = arr[r];
  41.         arr[r] = arr[i];
  42.         arr[i] = temp;
  43.         return i;
  44.     }
  45.  
  46.     public static void swap(Integer[] arr, int a, int b) {
  47.         int temp;
  48.         temp = arr[a];
  49.         arr[a] = arr[b];
  50.         arr[b] = temp;
  51.     }
  52.  
  53.     public static void main(String[] args) {
  54.         int[] size = {100, 500, 1000, 5000};
  55.         long[][] res = new long[4][4];
  56.         long begin, end;
  57.  
  58.         for (int i = 0; i < size.length; i++) {
  59.             Integer[] arr = new Integer[size[i]];
  60.             Arrays.fill(arr, new Random().nextInt());
  61.             Integer dup[] = arr;
  62.             Integer dupDesc[] = arr;
  63.             Integer dupDesc2[] = arr;
  64.             Arrays.sort(dupDesc, Collections.reverseOrder());
  65.             Arrays.sort(dupDesc2, Collections.reverseOrder());
  66.  
  67.             begin = System.nanoTime();
  68.             quickSort(arr, 0, size[i]-1);
  69.             end = System.nanoTime();
  70.             res[0][i] = (end - begin);
  71.  
  72.             begin = System.nanoTime();
  73.             quickSortDeluxe(dup, 0, size[i]-1);
  74.             end = System.nanoTime();
  75.             res[1][i] = (end - begin);
  76.          
  77.             begin = System.nanoTime();
  78.             quickSort(dupDesc, 0, size[i]-1);
  79.             end = System.nanoTime();
  80.             res[2][i] = (end - begin);
  81.  
  82.             begin = System.nanoTime();
  83.             quickSortDeluxe(dupDesc2, 0, size[i]-1);
  84.             end = System.nanoTime();
  85.             res[3][i] = (end - begin);
  86.         }
  87.         System.out.println("Wyniki działania programu:");
  88.         System.out.println();
  89.         System.out.println("Rozmiar tablicy n=100:\nDane korzystne|QuickSort: "+res[0][0]+"\nDane korzystne|QuickSort+: "+res[1][0]+"\nDane niekorzystne|QuickSort: "+res[2][0]+"\nDane niekorzystne|QuickSort+: "+res[3][0]);
  90.         System.out.println();
  91.         System.out.println("Rozmiar tablicy n=500:\nDane korzystne|QuickSort: "+res[0][1]+"\nDane korzystne|QuickSort+: "+res[1][1]+"\nDane niekorzystne|QuickSort: "+res[2][1]+"\nDane niekorzystne|QuickSort+: "+res[3][1]);
  92.         System.out.println();
  93.         System.out.println("Rozmiar tablicy n=1000:\nDane korzystne|QuickSort: "+res[0][2]+"\nDane korzystne|QuickSort+: "+res[1][2]+"\nDane niekorzystne|QuickSort: "+res[2][2]+"\nDane niekorzystne|QuickSort+: "+res[3][2]);
  94.         System.out.println();
  95.         System.out.println("Rozmiar tablicy n=5000:\nDane korzystne|QuickSort: "+res[0][3]+"\nDane korzystne|QuickSort+: "+res[1][3]+"\nDane niekorzystne|QuickSort: "+res[2][3]+"\nDane niekorzystne|QuickSort+: "+res[3][3]);
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement