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;
}
}
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;
}
}
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
