Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Consider QuickSort on the array A[1:n] and assume that the pivot element x (used

ID: 3847280 • Letter: C

Question

Consider QuickSort on the array A[1:n] and assume that the pivot element x (used to split the array A[lo:hi] into two portions such that all elements in the left portion A[lo:m] are 5x and all elements in the right portion A[m:hi] are >=x) is the second element of the array to be split (i. e., A[lo+1]).

Construct an infinite sequence of numbers for n and construct an assignment of the numbers 1...n to the n array elements that causes QuickSort, with the stated choice of pivot, to

(a).execute optimally (that is A[lo:m] and A[m:hi] are always of equal size)

(b).execute in the slowest possible way.(array not split evenly)

Explanation / Answer

// Java program for implementation of QuickSort

class QuickSort

{

    /* This function takes last element as pivot,

       places the pivot element at its correct

       position in sorted array, and places all

       smaller (smaller than pivot) to left of

       pivot and all greater elements to right

       of pivot */

    int partition(int arr[], int low, int high)

    {

        int pivot = arr[high];

        int i = (low-1); // index of smaller element

        for (int j=low; j<high; j++)

        {

            // If current element is smaller than or

            // equal to pivot

            if (arr[j] <= pivot)

            {

                i++;

                // swap arr[i] and arr[j]

                int temp = arr[i];

                arr[i] = arr[j];

                arr[j] = temp;

            }

        }

        // swap arr[i+1] and arr[high] (or pivot)

        int temp = arr[i+1];

        arr[i+1] = arr[high];

        arr[high] = temp;

        return i+1;

    }

    /* The main function that implements QuickSort()

      arr[] --> Array to be sorted,

      low --> Starting index,

      high --> Ending index */

    void sort(int arr[], int low, int high)

    {

        if (low < high)

        {

            /* pi is partitioning index, arr[pi] is

              now at right place */

            int pi = partition(arr, low, high);

            // Recursively sort elements before

            // partition and after partition

            sort(arr, low, pi-1);

            sort(arr, pi+1, high);

        }

    }

    /* A utility function to print array of size n */

    static void printArray(int arr[])

    {

        int n = arr.length;

        for (int i=0; i<n; ++i)

            System.out.print(arr[i]+" ");

        System.out.println();

    }

    // Driver program

    public static void main(String args[])

    {

        int arr[] = {10, 7, 8, 9, 1, 5};

        int n = arr.length;

        QuickSort ob = new QuickSort();

        ob.sort(arr, 0, n-1);

        System.out.println("sorted array");

        printArray(arr);

    }

}

// Java program for implementation of QuickSort

class QuickSort

{

    /* This function takes last element as pivot,

       places the pivot element at its correct

       position in sorted array, and places all

       smaller (smaller than pivot) to left of

       pivot and all greater elements to right

       of pivot */

    int partition(int arr[], int low, int high)

    {

        int pivot = arr[high];

        int i = (low-1); // index of smaller element

        for (int j=low; j<high; j++)

        {

            // If current element is smaller than or

            // equal to pivot

            if (arr[j] <= pivot)

            {

                i++;

                // swap arr[i] and arr[j]

                int temp = arr[i];

                arr[i] = arr[j];

                arr[j] = temp;

            }

        }

        // swap arr[i+1] and arr[high] (or pivot)

        int temp = arr[i+1];

        arr[i+1] = arr[high];

        arr[high] = temp;

        return i+1;

    }

    /* The main function that implements QuickSort()

      arr[] --> Array to be sorted,

      low --> Starting index,

      high --> Ending index */

    void sort(int arr[], int low, int high)

    {

        if (low < high)

        {

            /* pi is partitioning index, arr[pi] is

              now at right place */

            int pi = partition(arr, low, high);

            // Recursively sort elements before

            // partition and after partition

            sort(arr, low, pi-1);

            sort(arr, pi+1, high);

        }

    }

    /* A utility function to print array of size n */

    static void printArray(int arr[])

    {

        int n = arr.length;

        for (int i=0; i<n; ++i)

            System.out.print(arr[i]+" ");

        System.out.println();

    }

    // Driver program

    public static void main(String args[])

    {

        int arr[] = {10, 7, 8, 9, 1, 5};

        int n = arr.length;

        QuickSort ob = new QuickSort();

        ob.sort(arr, 0, n-1);

        System.out.println("sorted array");

        printArray(arr);

    }

}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote