Design and Analysis of Algorithm Lab 4 | Read Now

Design and Analysis of Algorithm Lab 4

4] Sort a given set of n integer elements using the 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 nongraph sheet. The elements can be read from a file or can be generated using the random number generator. Demonstrate using Java how the divide and conquer method works along with its time complexity analysis: worst case, average case, and best case.


4] Program code

import java.util.Random;
import java.util.Scanner;
public class lab4
{
	public static void main(String[] args) 
	{
		int a[]= new int[100000];
		Scanner in = new Scanner(System.in);
		long start, end;

		System.out.println("QUICK SORT PROGRAM");
		System.out.println("Enter the number of elements to be sorted");		
		int n = in.nextInt();
		Random rand= new Random();
		for(int i=0;i<n;i++)
			a[i]=rand.nextInt(100);

		System.out.println("Array elements to be sorted are");
		for(int i=0; i<n; i++)
			System.out.print(a[i]+" ");
		a[n]=999;
		start=System.nanoTime();
		quicksort(a,0,n-1);
		end=System.nanoTime();
	
		System.out.println("\nThe sorted elements are");
		for(int i=0; i<n; i++)
			System.out.print(a[i]+" ");
	
		System.out.println("\nThe time taken to sort is "+(end-start)+"ns");
	}
	
	static void quicksort(int a[],int p, int q)
	{
		int j;
		if(p < q)
		{
			j=partition(a,p,q);
			quicksort(a,p,j-1);
			quicksort(a,j+1,q);
		}
	}

	static int partition(int a[],int m, int p)
	{
		int v, i, j;
		v=a[m]; // first element is pivot element
		i=m;
		j=p;
		while(i <= j)
		{
			while(a[i] <= v)
			i++;
			while(a[j] > v)
			j--;
			if(i < j)
				interchange(a,i,j);
		}
		a[m] = a[j];
		a[j] = v;
		return j;
	}
	
	static void interchange(int a[], int i, int j)
	{
		int p;
		p = a[i];
		a[i] = a[j];
		a[j] = p;
	}
}

Output

Design and Analysis of Algorithm

Leave a Reply

Your email address will not be published. Required fields are marked *