In This post we are solving Sort a given set of n integer elements using Quick Sort method and compute its time complexity analysis worst case average case and best case.
2] Sort a given set of n integer elements using Quick Sort method and compute its time
complexity. Run the program for varied values of n> 5000 and record the time taken to sort. Plot a graph of the time taken versus n. The elements can be read from a file or can be generated using the random number generator. Demonstrate using C++/Java how the divide-and-conquer method works along with its time complexity analysis: worst case, average case and best case.
PROGRAM :-
import java.util.Random; import java.util.Scanner; public class Quick_sort { static int max = 10000; int partition(int[] a, int low, int high) { int p, i, j, temp; p = a[low]; i = low + 1; j = high; while (low < high) { while (a[i] <= p && i < high) i++; while (a[j] > p) j--; if (i < j) { temp = a[i]; a[i] = a[j]; a[j] = temp; } else { temp = a[low]; a[low] = a[j]; a[j] = temp; return j; } } return j; } void sort(int[] a, int low, int high) { if (low < high) { int s = partition(a, low, high); sort(a, low, s - 1); sort(a, s + 1, high); } } public static void main(String[] args) { int[] a; int i, n; System.out.println("Enter the array size"); Scanner sc = new Scanner(System.in); n = sc.nextInt(); a = new int[max]; Random generator = new Random(); for (i = 0; i < n; i++) a[i] = generator.nextInt(20); System.out.println("Array before sorting"); for (i = 0; i < n; i++) System.out.println(a[i] + " "); long startTime = System.nanoTime(); Quick_sort m = new Quick_sort(); m.sort(a, 0, n - 1); long stopTime = System.nanoTime(); long elapseTime = (stopTime - startTime); System.out.println("Time taken to sort array is:" + elapseTime + "nano seconds"); System.out.println("Sorted array is"); for (i = 0; i < n; i++) System.out.println(a[i]); } }