Exemplo n.º 1
0
 @Test
 // The following test is on a relatively large unsorted list filled with random numbers allowing
 // duplicated elements.
 public void testAllSecond() {
   // Make a random target list.
   int s = 1000;
   int[] target = new int[s];
   Random rand = new Random(System.currentTimeMillis());
   for (int i = 0; i < target.length; i++) target[i] = rand.nextInt(s / 2);
   // Sort the resulting list with each sorting algorithm.
   MergeSort ms = new MergeSort(target);
   QuickSort qs = new QuickSort(target);
   HeapSort hs = new HeapSort(target);
   int[] mr = ms.sort(MergeSort.ASC_DESC.DESCENDING);
   int[] qr = qs.sort(QuickSort.ASC_DESC.DESCENDING);
   int[] hr = hs.sort(HeapSort.ASC_DESC.DESCENDING);
   // Compare the results.
   /*for (int i = 0; i < target.length; i++)
   {
   	assertEquals(mr[i], qr[i]);
   	assertEquals(qr[i], hr[i]);
   }*/
   assertArrayEquals(mr, qr);
   assertArrayEquals(qr, hr);
 }
 @Test
 public void test() {
   int[] sorts = {850, 801, 500, 946, 798, 575, 128, 83, 929, 458, 491, 960, 830, 618, 314};
   HeapSort heapSort = new HeapSort();
   heapSort.heapSort(sorts, sorts.length);
   for (int i : sorts) {
     System.out.println(i);
   }
 }
Exemplo n.º 3
0
  public static void main(String[] args) {
    int[] A = {5, 13, 2, 25, 7, 17, 20, 8, 4};
    HeapSort hs = new HeapSort();
    hs.heapSort(A);

    for (int i : A) {
      System.out.println(i);
    }
  }
Exemplo n.º 4
0
  /** @param args */
  public static void main(String[] args) {
    // TODO Auto-generated method stub

    int[] num = readNumberFromCommandLine();

    System.out.println("NUMBERS ENTERED TO SORT");
    for (int i = 0; i < num.length; i++) {
      System.out.print(num[i] + "\t");
    }

    /*Call for Insertion Sorting
     *Uncomment the below line to execute merge sort
     * */
    // InsertionSort.insertionSort(num);

    /*Call for Merge Sorting
     *Uncomment the below line to execute merge sort
     * */
    // MergeSort.sort(num);

    /*Call for Bubble Sorting
     *Uncomment the below line to execute merge sort
     * */
    // BubbleSort.sort(num);

    /*Call for Heap Sorting
     *Uncomment the below line to execute merge sort
     * */
    HeapSort.sort(num);
  }
Exemplo n.º 5
0
  public static void main(String[] args) {

    Comparator minComp = new Lesser();
    Comparator maxComp = new Greater();
    int n;
    for (int power = 4; power <= 5; power++) {
      n = (int) Math.pow(2, power);
      int[] maxArray = new int[n];
      for (int i = 0; i < n; i++) {
        maxArray[i] = (int) (Math.random() * (n + 1));
      }
      int[] iArray = Arrays.copyOf(maxArray, n);
      int[] mArray = Arrays.copyOf(maxArray, n);
      int[] minArray = Arrays.copyOf(maxArray, n);
      int[] temp = new int[n];

      System.out.println("MaxHeap Sort iteration " + power + ": ");
      startTimer();
      HeapSort.heapSort(maxArray, maxComp);
      stopTimer();

      System.out.println("MinHeap Sort iteration " + power + ": ");
      startTimer();
      HeapSort.heapSort(minArray, minComp);
      stopTimer();

      System.out.println("Insertion Sort iteration " + power + ": ");
      startTimer();
      InsertionSort.insertionSort(iArray);
      stopTimer();

      System.out.println("Merge Sort iteration " + power + ": ");
      startTimer();
      MergeSort.mergeSort(mArray, temp, 0, n - 1);
      stopTimer();
      System.out.println("---------------------------------------\n");
    }
  }
Exemplo n.º 6
0
  public static void main(String[] args) {
    // Array length
    int length = 20000;
    // Random number range
    int range = 200;
    // Print results
    boolean print = false;
    // For measuring performance
    long startTime, endTime;

    int[] unsortedArray = new int[length];

    // Array of randomly generated numbers
    Random generator = new Random();
    for (int i = 0; i < unsortedArray.length; i++) {
      unsortedArray[i] = generator.nextInt(range);
    }

    // BubbleSort run
    startTime = System.nanoTime();
    int[] bubbleSortedArray = BubbleSort.sort(unsortedArray);
    endTime = System.nanoTime();
    System.out.println("BubbleSort " + (endTime - startTime));

    // SelectionSort run
    startTime = System.nanoTime();
    int[] selectionSortedArray = SelectionSort.sort(unsortedArray);
    endTime = System.nanoTime();
    System.out.println("SelectionSort " + (endTime - startTime));

    // HeapSort run
    startTime = System.nanoTime();
    int[] heapSortedArray = HeapSort.sort(unsortedArray);
    endTime = System.nanoTime();
    System.out.println("HeapSort " + (endTime - startTime));

    // Print the arrays
    if (print) {
      Helper.printArray(unsortedArray);
      Helper.printArray(bubbleSortedArray);
      Helper.printArray(heapSortedArray);
      Helper.printArray(selectionSortedArray);
    }
  }
Exemplo n.º 7
0
 @Test
 public void testHeapSortDescending() {
   HeapSort hs = new HeapSort(list);
   int[] result = hs.sort(HeapSort.ASC_DESC.DESCENDING);
   for (int i = 0; i < list.length; i++) assertEquals(list.length - 1 - i, result[i]);
 }
Exemplo n.º 8
0
  @Test
  public void testPerformance() {
    // Make a random target list.
    int s = 50000;
    int[] target = new int[s];
    Random rand = new Random(System.currentTimeMillis());
    for (int i = 0; i < target.length; i++) target[i] = rand.nextInt(s / 2);
    // Sort the resulting list with each sorting algorithm.
    MergeSort ms = new MergeSort(target);
    QuickSort qs = new QuickSort(target);
    HeapSort hs = new HeapSort(target);
    BubbleSort bs = new BubbleSort(target);
    InsertionSort is = new InsertionSort(target);

    long start;
    start = System.currentTimeMillis();
    int[] mr = ms.sort(MergeSort.ASC_DESC.DESCENDING);
    long mt = System.currentTimeMillis() - start;
    start = System.currentTimeMillis();
    int[] qr = qs.sort(QuickSort.ASC_DESC.DESCENDING);
    long qt = System.currentTimeMillis() - start;
    start = System.currentTimeMillis();
    int[] hr = hs.sort(HeapSort.ASC_DESC.DESCENDING);
    long ht = System.currentTimeMillis() - start;
    start = System.currentTimeMillis();
    int[] br = bs.sort(BubbleSort.ASC_DESC.DESCENDING);
    long bt = System.currentTimeMillis() - start;
    start = System.currentTimeMillis();
    int[] ir = is.sort(InsertionSort.ASC_DESC.DESCENDING);
    long it = System.currentTimeMillis() - start;

    // Compare the results.
    /*
    for (int i = 0; i < target.length; i++)
    {
    	assertEquals(mr[i], qr[i]);
    	assertEquals(qr[i], hr[i]);
    	assertEquals(hr[i], br[i]);
    	assertEquals(br[i], ir[i]);
    }*/
    assertArrayEquals(mr, qr);
    assertArrayEquals(qr, hr);
    assertArrayEquals(hr, br);
    assertArrayEquals(br, ir);
    System.out.println(
        "SortTest.testPerformance(): MS "
            + mt
            + ", QS "
            + qt
            + ", HS "
            + ht
            + ", BS "
            + bt
            + ", IS "
            + it);
    // Analyze the performance result.
    assertTrue(mt < bt && mt < it);
    assertTrue(qt < bt && qt < it);
    assertTrue(ht < bt && ht < it);
    assertTrue(
        it < bt); // Check whether your system does the same with TA's, since insertion sort is
    // faster in TA's machine.
    // Analyze with more tight conditions.
    double factor = 0.25;
    assertTrue(mt < factor * it);
    assertTrue(qt < factor * it);
    assertTrue(ht < factor * it);
    // FYI, in TA's machine, it is like 'MS 41, QS 216, HS 19, BS 6146, IS 1942'.
  }