DAA 3
MargeSort pgm
package demo;
import java.util.Scanner;
public class MergeSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
int a[];
Scanner scan=new Scanner(System.in);
System.out.println("Enter the size for merge sort...:");
int n=scan.nextInt();
a=new int[n];
System.out.println("enter array elements:");
for(int i=0;i<n;i++)
a[i]=scan.nextInt();
msortdiv(a,0,n-1);
System.out.println("sorted array are:");
for(int i=0;i<n;i++)
System.out.println(a[i]+" ");
}
static void msortdiv(int a[],int low,int high)
{
int mid;
if(low<high)
{
mid=(low+high)/2;
msortdiv(a,low,mid);
msortdiv(a,mid+1,high);
mergesort(a,low,mid,high);
}
}
static void mergesort(int a[],int low,int mid,int high)
{
int i,j,k,b[]=new int[20];
i=low;
j=mid+1;
k=low;
while(i<=mid && j<=high)
{
if(a[i]>=a[j])
{
b[k]=a[j];
j++;
k++;
}
else
{
b[k]=a[i];
k++;
i++;
}
}
while(i<=mid)
{
b[k++]=a[i++];
}
while(j<=high)
{
b[k++]=a[j++];
}
for( i=low;i<=high;i++)
{
a[i]=b[i];
}
}
}
Program 7: Write a program that implement prim’s algorithm to generate
minimum cost spanning tree.
package prims;
import java.util.*;
public class PrimProgram {
//static Scanner scan;
final static int MAX=20;
static int n;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scan=new Scanner(System.in);
int[][] matrix=new int[MAX][MAX];
int[] visited=new int[10];
int min;
int u=0;
int v=0;
int total=0;
System.out.println("Enter number of nodes");
int n=scan.nextInt();
System.out.println("Enter cost matrix");
for(int i=0;i<n;i++)
{
visited[i]=0;
for(int j=0;j<n;j++)
{
matrix[i][j]=scan.nextInt();
if(matrix[i][j]==0)
{
matrix[i][j]=999;
}
}
}
visited[0]=1;
//start algorithm
for(int counter =0; counter<n-1;counter++)
{
min=999;
for(int i=0;i<n;i++)
{
if(visited[i]==1)
{
for(int j=0;j<n;j++)
{
if(visited[j]!=1)
{
if(min>matrix[i][j])
{
min=matrix[i][j];
u=i;
v=j;
}
}}}}
visited[v]=1;
total+=min;
System.out.println("Edge found:"+u+"->"+v+": Weight:"+min);
}
System.out.println("The weight of the minimum spanning tree is"+total);
}
Program 8: Write a program that implement kruskal’s algorithm to
generate minimum cost spanning tree.
package kruskal;
import java.util.*;
public class KruskalProgram {
final static int MAX=20;
static int n; // no of vertices
static int cost[][];//cost matrix
static int parent[]=new int[9];
static Scanner scan=new Scanner(System.in);
public static void main(String[] args) {
// TODO Auto-generated method stub
ReadMatrix();//read input
Kruskals();//construct minimum spanning tree
}
static void ReadMatrix()
{
int i,j;
cost=new int[MAX][MAX];
System.out.println("\nEnter the number of nodes");
n=scan.nextInt();
System.out.println("\nEnter cost matrix");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cost[i][j]=scan.nextInt();
if(cost[i][j]==0)
{
cost[i][j]=999;
}
}
}
}
static void Kruskals()
{
int a=0,b=0,u=0,v=0;
int i,j,ne=1,min,mincost=0;
System.out.println("The Edges of minimum cost spanning Tree are");
while(ne<n)
{
for(i=1,min=999;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(cost[i][j]<min)
{
min=cost[i][j];
a=u=i;
b=v=j;
}
}
}
while(parent[a]>0)
{
a=parent[a];
}
while(parent[b]>0)
{
b=parent[b];
}
if(v!=u)
{
uni(u,v);
mincost+=min;
System.out.println(ne++ +"edge("+u+","+v+")=" +min);
}
cost[a][b]=cost[b][a]=999;
}
System.out.println("minimum cost is:"+mincost);
}
static void uni(int i,int j)
{
parent[j]=i;
}
}