Question: Sorting (Java using Eclipse) In this weeks lecture, the algorithms quicksort and bubblesort are described. In Sorting Algorithms (Links to an external site.) /******************************************** *

Sorting (Java using Eclipse) In this weeks lecture, the algorithms quicksort and bubblesort are described. In Sorting Algorithms (Links to an external site.) /******************************************** * Week 4 lab - : * * ArrayList class with sorting algorithms * *********************************************/ /** * Class implementing an array based list. Bubblesort and quicksort algorithms * are implemented also. */ public class ArrayList { /** * Default constructor. Sets length to 0, initializing the list as an empty * list. Default size of array is 20. */ public ArrayList() { SIZE = 20; list = new int[SIZE]; length = 0; } /** * Determines whether the list is empty * * @return true if the list is empty, false otherwise */ public boolean isEmpty() { return length == 0; } /** * Prints the list elements. */ public void display() { for (int i = 0; i < length; i++) System.out.print(list[i] + " "); System.out.println(); } /** * Adds the element x to the end of the list. List length is increased by 1. * * @param x element to be added to the list */ public void add(int x) { if (length == SIZE) System.out.println("Insertion Error: list is full"); else { list[length] = x; length++; } } /** * Removes the element at the given location from the list. List length is * decreased by 1. * * @param pos location of the item to be removed */ public void removeAt(int pos) { for (int i = pos; i < length - 1; i++) list[i] = list[i + 1]; length--; } //Implementation of methods in the lab exercise /** * Non default constructor. Sets length to 0, initializing the list as an * empty list. Size of array is passed as a parameter. * * @param size size of the array list */ public ArrayList(int size) { SIZE = size; list = new int[SIZE]; length = 0; } /** * Returns the number of items in the list (accessor method). * * @return the number of items in the list. */ public int getLength() { return length; } /** * Returns the size of the list (accessor method). * * @return the size of the array */ public int getSize() { return SIZE; } /** * Removes all of the items from the list. After this operation, the length * of the list is zero. */ public void clear() { length = 0; } /** * Replaces the item in the list at the position specified by location. * * @param location location of the element to be replaced * @param item value that will replace the value at location */ public void replace(int location, int item) { if (location = length) System.out.println("Error: invalid location"); else list[location] = item; } /** * Adds an item to the list at the position specified by location. * * @param location location where item will be added. * @param item item to be added to the list. */ public void add(int location, int item) { if (location = length) System.out.println("Error: invalid position"); else if (length == SIZE) System.out.println("Error: Array is full"); else { for (int i = length; i > location; i--) list[ i] = list[ i - 1]; list[location] = item; length++; } } /** * Deletes an item from the list. All occurrences of item in the list will * be removed. * * @param item element to be removed. */ public void remove(int item) { for (int i = 0; i < length; i++) if (list[i] == item) { removeAt(i); i--; //onsecutive values won't be all removed; that's why i-- is here } } /** * Returns the element at location * * @param location position in the list of the item to be returned * @return element at location */ public int get(int location) { int x = -1; if (location = length) System.out.println("Error: invalid location"); else x = list[location]; return x; } /*The methods listed below are new additions to the ArrayList class * completed in Week 1*/ /** * Makes a deep copy to another ArrayList object. * * @return Copy of this ArrayList */ public ArrayList copy() { ArrayList newList = new ArrayList(this.SIZE); newList.length = this.length; for (int i = 0; i < length; i++) newList.list[i] = this.list[i]; return newList; } /** * Bubble-sorts this ArrayList */ public void bubbleSort() { for (int i = 0; i < length - 1; i++) for (int j = 0; j list[j + 1]) { //swap list[j] and list[j+1] int temp = list[j]; list[j] = list[j + 1]; list[j + 1] = temp; } } /** * Quick-sorts this ArrayList. */ public void quicksort() { quicksort(0, length - 1); } /** * Recursive quicksort algorithm. * * @param begin initial index of sublist to be quick-sorted. * @param end last index of sublist to be quick-sorted. */ private void quicksort(int begin, int end) { int temp; int pivot = findPivotLocation(begin, end); // swap list[pivot] and list[end] temp = list[pivot]; list[pivot] = list[end]; list[end] = temp; pivot = end; int i = begin, j = end - 1; boolean iterationCompleted = false; while (!iterationCompleted) { while (list[i] = 0) && (list[pivot] < list[j])) j--; if (i < j) { //swap list[i] and list[j] temp = list[i]; list[i] = list[j]; list[j] = temp; i++; j--; } else iterationCompleted = true; } //swap list[i] and list[pivot] temp = list[i]; list[i] = list[pivot]; list[pivot] = temp; if (begin < i - 1) quicksort(begin, i - 1); if (i + 1 < end) quicksort(i + 1, end); } /* * Computes the pivot location. */ private int findPivotLocation(int b, int e) { return (b + e) / 2; } private static int SIZE; //size of the array that stores the list items private int[] list; //array to store the list items private int length; //amount of items in the list } /******************************************** * Week 4 lab : * * ArrayList class with sorting algorithms * *********************************************/ /** * Class to test bubblesort and quicksort algorithms implemented in ArrayList. */ public class Main { public Main() { //creating a list of integers int n = 25; ArrayList numbers = new ArrayList(n); //filling the list with random integers for (int i = 0; i < n; i++) numbers.add((int) (Math.random() * 100)); //printing the list System.out.println("Original list of numbers:"); numbers.display(); //testing bubblesort ArrayList numbersCopy1 = numbers.copy(); System.out.println(" Bubble-sorted list of numbers:"); numbersCopy1.bubbleSort(); numbersCopy1.display(); //testing quicksort ArrayList numbersCopy2 = numbers.copy(); System.out.println(" Quick-sorted list of numbers:"); numbersCopy2.quicksort(); numbersCopy2.display(); } public static void main(String[] args) { Main myAppl = new Main(); you can find the class ArrayList, where these sorting algorithms are implemented. Write a program that times both of them for various list lengths, filling the array lists with random numbers. Use at least 10 different list lengths, and be sure to include both small values and large values for the list lengths. Create a table to record the times. List Length Bubblesort Time (milliseconds) Quicksort Time (milliseconds) Regarding the efficiency of both sorting methods, what conclusion can be reached from this experiment? Both the table and your conclusions should be included in a separate Word document. Place you screenshot of results from the running program in that document, too.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!