diff --git a/Dijkstra Algorith.txt b/Dijkstra Algorith.txt new file mode 100644 index 0000000..00baeb0 --- /dev/null +++ b/Dijkstra Algorith.txt @@ -0,0 +1,90 @@ +// A C++ program for Dijkstra's single source shortest path algorithm. +// The program is for adjacency matrix representation of the graph + +#include +#include + +// Number of vertices in the graph +#define V 9 + +// A utility function to find the vertex with minimum distance value, from +// the set of vertices not yet included in shortest path tree +int minDistance(int dist[], bool sptSet[]) +{ + // Initialize min value + int min = INT_MAX, min_index; + + for (int v = 0; v < V; v++) + if (sptSet[v] == false && dist[v] <= min) + min = dist[v], min_index = v; + + return min_index; +} + +// A utility function to print the constructed distance array +void printSolution(int dist[]) +{ + printf("Vertex \t\t Distance from Source\n"); + for (int i = 0; i < V; i++) + printf("%d \t\t %d\n", i, dist[i]); +} + +// Function that implements Dijkstra's single source shortest path algorithm +// for a graph represented using adjacency matrix representation +void dijkstra(int graph[V][V], int src) +{ + int dist[V]; // The output array. dist[i] will hold the shortest + // distance from src to i + + bool sptSet[V]; // sptSet[i] will be true if vertex i is included in shortest + // path tree or shortest distance from src to i is finalized + + // Initialize all distances as INFINITE and stpSet[] as false + for (int i = 0; i < V; i++) + dist[i] = INT_MAX, sptSet[i] = false; + + // Distance of source vertex from itself is always 0 + dist[src] = 0; + + // Find shortest path for all vertices + for (int count = 0; count < V - 1; count++) { + // Pick the minimum distance vertex from the set of vertices not + // yet processed. u is always equal to src in the first iteration. + int u = minDistance(dist, sptSet); + + // Mark the picked vertex as processed + sptSet[u] = true; + + // Update dist value of the adjacent vertices of the picked vertex. + for (int v = 0; v < V; v++) + + // Update dist[v] only if is not in sptSet, there is an edge from + // u to v, and total weight of path from src to v through u is + // smaller than current value of dist[v] + if (!sptSet[v] && graph[u][v] && dist[u] != INT_MAX + && dist[u] + graph[u][v] < dist[v]) + dist[v] = dist[u] + graph[u][v]; + } + + // print the constructed distance array + printSolution(dist); +} + +// driver program to test above function +int main() +{ + /* Let us create the example graph discussed above */ + int graph[V][V] = { { 0, 4, 0, 0, 0, 0, 0, 8, 0 }, + { 4, 0, 8, 0, 0, 0, 0, 11, 0 }, + { 0, 8, 0, 7, 0, 4, 0, 0, 2 }, + { 0, 0, 7, 0, 9, 14, 0, 0, 0 }, + { 0, 0, 0, 9, 0, 10, 0, 0, 0 }, + { 0, 0, 4, 14, 10, 0, 2, 0, 0 }, + { 0, 0, 0, 0, 0, 2, 0, 1, 6 }, + { 8, 11, 0, 0, 0, 0, 1, 0, 7 }, + { 0, 0, 2, 0, 0, 0, 6, 7, 0 } }; + + dijkstra(graph, 0); + + return 0; +} \ No newline at end of file diff --git a/FibonacciSearch.txt b/FibonacciSearch.txt new file mode 100644 index 0000000..9befb37 --- /dev/null +++ b/FibonacciSearch.txt @@ -0,0 +1,52 @@ +#include +using namespace std; + +void FibonacciSearch(int *a, int start, int end, int *fib, int index, int item) +{ + int i, mid; + mid = start+fib[index-2]; + if(item == a[mid]) + { cout<<"\n item found at "< a[mid]) + FibonacciSearch(a, mid, end, fib, index-1, item); + else + FibonacciSearch(a, start, mid, fib, index-2, item); +} + +void main() +{ int n, i, fib[20], a[10]={3, 7, 55, 86, 7, 15, 26, 30, 46, 95}; + char ch; + fib[0] = 0; + fib[1] = 1; + i = 1; + while(fib[i] < 10) + { i++; + fib[i] = fib[i-1] + fib[i-2]; + } + up: + cout<<"\nEnter the Element to be searched: "; + cin>>n; + FibonacciSearch(a, 0, 9, fib, i, n); + cout<<"\n\n\tDo you want to search more...enter choice(y/n)?"; + cin>>ch; + + if(ch == 'y' || ch == 'Y') + goto up; + + return 0; + +} \ No newline at end of file