Min Max
Min Max
import java.util.*;
if(i == j) {
min = a[i];
max = a[j];
min = a[i];
max = a[j];
else {
min = a[j];
max = a[i];
else {
mid = (i+j)/2;
MinMax(i,mid);
MinMax(mid+1,j);
min = min1;
max = max1;
for(int i=0;i<n;i++)
a[i] = sc.nextInt();
MinMax(0,n-1);
Binary Search:
class BinarySearch{
public static int binarySearch(int arr[], int first, int last, int key){
if (last>=first){
if (arr[mid] == key){
return mid;
}else{
return -1;
int last=arr.length-1;
if (result == -1)
else
if(size == 1) {
if(board[x][y] == 1)
return;
if(board[x+mid-1][y+mid-1] == 1)
findDefective(board,x,y,mid);
else if(board[x+mid][y+mid-1] == 1)
findDefective(board,x+mid,y,mid);
else
findDefective(board,x+mid,y+mid,mid);
int n = chessBoard.length;
findDefective(chessBoard,0,0,n);
Knapsack:
if (wt[i-1] <= w) {
} else {
V[i][w] = V[i-1][w];
return V[n][W];
}
public static void main(String[] args) {
int W = 50;
int n = val.length;
Sum of Subsets:
import java.util.*;
public class SS {
private static void backtrack(int[] a, int target, int Start, List<Integer> currentSubset, int currentSum) {
if(currentSum == target) {
System.out.println(currentSubset);
return;
currentSubset.add(a[i]);
currentSubset.remove(currentSubset.size()-1);
int target = 5;
findSubsetSums(a, target);
NQueens:
import java.util.*;
if(row == n) {
printSolution(board,n);
return true;
board[row] = col;
board[row] = -1;
return result;
if(board[i] == j)
System.out.print("Q");
else
System.out.print(" . ");
System.out.println();
System.out.println();
private static boolean isSafe(int[] board, int row, int col, int n) {
return false;
}
return true;
int n = 4;
if(!solveQueens(n))
BFS:
import java.util.*;
class Graph {
Graph(int V) {
vertices = V;
adjList[V].add(w);
visited[startVertex] = true;
queue.add(startVertex);
while(!queue.isEmpty()) {
while(iterator.hasNext()) {
if(!visited[adjVertex]) {
visited[adjVertex] = true;
queue.add(adjVertex);
}
}
g.addEdge(0,1);
g.addEdge(0,2);
g.addEdge(1,3);
g.addEdge(1,4);
g.addEdge(2,5);
g.BFS(0);
DFS:
import java.util.*;
public Graph() {
adjList.putIfAbsent(vertex,new ArrayList<>());
adjList.get(src).add(dest);
adjList.get(dest).add(src);
DFSUtil(start,visited);
visited.add(vertex);
if(!visited.contains(neighbour)) {
DFSUtil(neighbour,visited);
g.addVertex(0);
g.addVertex(1);
g.addVertex(2);
g.addVertex(3);
g.addVertex(4);
g.addVertex(5);
g.addEdge(0,1);
g.addEdge(0,2);
g.addEdge(1,3);
g.addEdge(2,4);
g.addEdge(3,5);
g.DFS(0);
Bin Packing:
import java.util.*;
int binCount = 1;
spaceLeft -= arr[i];
} else {
binCount++;
}
System.out.println("Number of bins required: " + binCount);
int n = sc.nextInt();
arr[i] = sc.nextInt();
binpacking(arr, n, size);
Kruskal algorithm:
import java.util.*;
this.src = src;
this.dest = dest;
this.weight = weight;
class Subset
}
public class KruskalsAlgorithm
int V, E;
Edge[] edges;
V = v;
E = e;
if (subsets[i].parent != i)
return subsets[i].parent;
subsets[rootX].parent = rootY;
subsets[rootY].parent = rootX;
else {
subsets[rootY].parent = rootX;
subsets[rootX].rank++;
void kruskalMST()
int e = 0;
int i = 0;
Arrays.sort(edges);
subsets[v].parent = v;
subsets[v].rank = 0;
if (x != y) {
result[e++] = nextEdge;
union(subsets, x, y);
int V = 4;
int E = 5;
graph.kruskalMST();
Transitive closure:
reach[i][j] = graph[i][j];
printMatrix(reach);
System.out.println();
int[][] graph = {
{1, 1, 0, 1},
{0, 1, 1, 0},
{0, 0, 1, 1},
{0, 0, 0, 1}
};
tc.transitiveClosure(graph);
import java.util.*;
queue.add(s);
visited[s] = true;
parent[s] = -1;
while (!queue.isEmpty()) {
int u = queue.poll();
queue.add(v);
parent[v] = u;
visited[v] = true;
return visited[t];
int u, v;
residualGraph[u][v] = graph[u][v];
int maxFlow = 0;
for (v = t; v != s; v = parent[v]) {
u = parent[v];
for (v = t; v != s; v = parent[v]) {
u = parent[v];
residualGraph[u][v] -= pathFlow;
residualGraph[v][u] += pathFlow;
}
maxFlow += pathFlow;
return maxFlow;
int[][] graph = {
{0, 0, 9, 0, 0, 20},
{0, 0, 0, 7, 0, 4},
{0, 0, 0, 0, 0, 0}
};