0% found this document useful (0 votes)
20 views

Final_CPP_Programs_with_Outputs

CPP Program with output
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Final_CPP_Programs_with_Outputs

CPP Program with output
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

C++ Programs with Outputs

Recursive Binary Search and Linear Search

#include <iostream>
#include <vector>
using namespace std;

// Recursive Linear Search


int linearSearch(const vector<int>& arr, int index, int key) {
if (index >= arr.size()) return -1;
if (arr[index] == key) return index;
return linearSearch(arr, index + 1, key);
}

// Recursive Binary Search


int binarySearch(const vector<int>& arr, int low, int high, int key) {
if (low > high) return -1;
int mid = low + (high - low) / 2;
if (arr[mid] == key) return mid;
if (arr[mid] > key) return binarySearch(arr, low, mid - 1, key);
return binarySearch(arr, mid + 1, high, key);
}

int main() {
vector<int> arr = {1, 3, 5, 7, 9, 11};
int key = 7;

cout << "Linear Search Result: " << linearSearch(arr, 0, key) << endl;
cout << "Binary Search Result: " << binarySearch(arr, 0, arr.size() - 1, key) << endl;
return 0;
}

Heap Sort

#include <iostream>
#include <vector>
using namespace std;

void heapify(vector<int>& arr, int n, int i) {


int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;

if (left < n && arr[left] > arr[largest]) largest = left;


if (right < n && arr[right] > arr[largest]) largest = right;
if (largest != i) {
swap(arr[i], arr[largest]);
heapify(arr, n, largest);
}
}

void heapSort(vector<int>& arr) {


int n = arr.size();
for (int i = n / 2 - 1; i >= 0; i--) heapify(arr, n, i);
for (int i = n - 1; i > 0; i--) {
swap(arr[0], arr[i]);
heapify(arr, i, 0);
}
}

int main() {
vector<int> arr = {4, 10, 3, 5, 1};
heapSort(arr);
for (int i : arr) cout << i << " ";
cout << endl;
return 0;
}

Merge Sort

#include <iostream>
#include <vector>
using namespace std;

void merge(vector<int>& arr, int left, int mid, int right) {


int n1 = mid - left + 1;
int n2 = right - mid;

vector<int> L(n1), R(n2);


for (int i = 0; i < n1; i++) L[i] = arr[left + i];
for (int j = 0; j < n2; j++) R[j] = arr[mid + 1 + j];

int i = 0, j = 0, k = left;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
k++;
}

while (i < n1) arr[k++] = L[i++];


while (j < n2) arr[k++] = R[j++];
}

void mergeSort(vector<int>& arr, int left, int right) {


if (left >= right) return;
int mid = left + (right - left) / 2;
mergeSort(arr, left, mid);
mergeSort(arr, mid + 1, right);
merge(arr, left, mid, right);
}

int main() {
vector<int> arr = {12, 11, 13, 5, 6, 7};
mergeSort(arr, 0, arr.size() - 1);
for (int i : arr) cout << i << " ";
cout << endl;
return 0;
}

Selection Sort

#include <iostream>
#include <vector>
using namespace std;

void selectionSort(vector<int>& arr) {


for (int i = 0; i < arr.size() - 1; i++) {
int minIdx = i;
for (int j = i + 1; j < arr.size(); j++) {
if (arr[j] < arr[minIdx]) minIdx = j;
}
swap(arr[i], arr[minIdx]);
}
}

int main() {
vector<int> arr = {64, 25, 12, 22, 11};
selectionSort(arr);
for (int i : arr) cout << i << " ";
cout << endl;
return 0;
}

Insertion Sort

#include <iostream>
#include <vector>
using namespace std;

void insertionSort(vector<int>& arr) {


for (int i = 1; i < arr.size(); i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}

int main() {
vector<int> arr = {12, 11, 13, 5, 6};
insertionSort(arr);
for (int i : arr) cout << i << " ";
cout << endl;
return 0;
}

Quick Sort

#include <iostream>
#include <vector>
using namespace std;

int partition(vector<int>& arr, int low, int high) {


int pivot = arr[high];
int i = low - 1;

for (int j = low; j < high; j++) {


if (arr[j] < pivot) {
i++;
swap(arr[i], arr[j]);
}
}
swap(arr[i + 1], arr[high]);
return i + 1;
}

void quickSort(vector<int>& arr, int low, int high) {


if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}

int main() {
vector<int> arr = {10, 7, 8, 9, 1, 5};
quickSort(arr, 0, arr.size() - 1);
for (int i : arr) cout << i << " ";
cout << endl;
return 0;
}

Knapsack Problem (Greedy)

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct Item {
int value, weight;
double ratio;
};
bool compare(Item a, Item b) {
return a.ratio > b.ratio;
}

double knapsackGreedy(vector<Item>& items, int W) {


sort(items.begin(), items.end(), compare);
double totalValue = 0;
for (auto& item : items) {
if (W >= item.weight) {
W -= item.weight;
totalValue += item.value;
} else {
totalValue += item.ratio * W;
break;
}
}
return totalValue;
}

int main() {
vector<Item> items = {{60, 10}, {100, 20}, {120, 30}};
for (auto& item : items) item.ratio = (double)item.value / item.weight;
int W = 50;
cout << "Maximum value in Knapsack = " << knapsackGreedy(items, W) << endl;
return 0;
}

Traveling Salesman Problem (TSP)

#include <iostream>
#include <vector>
#include <climits>
using namespace std;

int tsp(vector<vector<int>>& graph, vector<bool>& visited, int currPos, int n, int count, int
cost, int& ans) {
if (count == n && graph[currPos][0]) {
ans = min(ans, cost + graph[currPos][0]);
return ans;
}

for (int i = 0; i < n; i++) {


if (!visited[i] && graph[currPos][i]) {
visited[i] = true;
tsp(graph, visited, i, n, count + 1, cost + graph[currPos][i], ans);
visited[i] = false;
}
}
return ans;
}

int main() {
vector<vector<int>> graph = {
{0, 10, 15, 20},
{10, 0, 35, 25},
{15, 35, 0, 30},
{20, 25, 30, 0}
};
int n = graph.size();
vector<bool> visited(n, false);
visited[0] = true;
int ans = INT_MAX;
cout << "Minimum cost of TSP: " << tsp(graph, visited, 0, n, 1, 0, ans) << endl;
return 0;
}

Find Minimum Spanning Tree using Kruskal's Algorithm

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

struct Edge {
int src, dest, weight;
};

bool compare(Edge a, Edge b) {


return a.weight < b.weight;
}

int findParent(int v, vector<int>& parent) {


if (parent[v] == v) return v;
return parent[v] = findParent(parent[v], parent);
}
void kruskal(vector<Edge>& edges, int V) {
sort(edges.begin(), edges.end(), compare);
vector<int> parent(V);
for (int i = 0; i < V; i++) parent[i] = i;

vector<Edge> result;
int cost = 0;
for (auto& edge : edges) {
int p1 = findParent(edge.src, parent);
int p2 = findParent(edge.dest, parent);

if (p1 != p2) {
result.push_back(edge);
cost += edge.weight;
parent[p1] = p2;
}
}

cout << "Minimum Spanning Tree:" << endl;


for (auto& edge : result) {
cout << edge.src << " - " << edge.dest << " : " << edge.weight << endl;
}
cout << "Total cost: " << cost << endl;
}

int main() {
vector<Edge> edges = {{0, 1, 10}, {0, 2, 6}, {0, 3, 5}, {1, 3, 15}, {2, 3, 4}};
int V = 4; // Number of vertices
kruskal(edges, V);
return 0;
}

Implement N Queen Problem using Backtracking

#include <iostream>
#include <vector>
using namespace std;

bool isSafe(vector<vector<int>>& board, int row, int col, int n) {


for (int i = 0; i < col; i++)
if (board[row][i]) return false;
for (int i = row, j = col; i >= 0 && j >= 0; i--, j--)
if (board[i][j]) return false;

for (int i = row, j = col; i < n && j >= 0; i++, j--)


if (board[i][j]) return false;

return true;
}

bool solveNQUtil(vector<vector<int>>& board, int col, int n) {


if (col >= n) return true;

for (int i = 0; i < n; i++) {


if (isSafe(board, i, col, n)) {
board[i][col] = 1;
if (solveNQUtil(board, col + 1, n)) return true;
board[i][col] = 0;
}
}
return false;
}

void printSolution(vector<vector<int>>& board, int n) {


for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
cout << board[i][j] << " ";
cout << endl;
}
}

int main() {
int n = 8;
vector<vector<int>> board(n, vector<int>(n, 0));
if (solveNQUtil(board, 0, n))
printSolution(board, n);
else
cout << "Solution does not exist";
return 0;
}

You might also like