Posts

Showing posts from May, 2023

Dijkstra

 Dijkstra #include <stdio.h> #include <stdlib.h> #include <limits.h> #define V 9 int minDistance ( int dist [] , int visited [] ) {     int min = INT_MAX , min_index ;     for ( int i = 0 ; i < V ; i ++ ) {         if ( visited [ i ] == 0 && dist [ i ] < min ) {             min = dist [ i ];             min_index = i ;         }     }     return min_index ; } 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 ]);     } } void dijkstra ( int graph [ V ][ V ], int source ) {     int dist [ V ];     int visited [ V ];     for ( int i = 0 ; i < V ; i ++ ) {         dist [ i ] = INT_MAX ;         visited [ i ] = 0 ;     }     dist [ source ] = 0 ;     for ( int count = 0 ; count < V - 1 ; count ++ ) {         int u = minDistance ( dist , visit

Dijkastra

 Dijkstra by vishwakaarma #include <stdio.h> #include <stdlib.h> int calculateMinDistance ( int cost [ 10 ][ 10 ], int distance [ 10 ], int path [ 10 ][ 10 ], int n , int v , int p , int row , int column ); int main () {     int cost [ 10 ][ 10 ], distance [ 10 ], path [ 10 ][ 10 ], n , p , i , j , v , min , row , column , index = 1 ;     printf ( "enter the nodes:" );     scanf ( " %d " , & n );     printf ( "enter the cost matrix:" );     for ( i = 1 ; i <= n ; i ++ )     {         for ( j = 1 ; j <= n ; j ++ )         {             scanf ( " %d " , & cost [ i ][ j ]);         }     }     printf ( "enter the node to visit:" );     scanf ( " %d " , & v );     printf ( "enter the path :" );     scanf ( " %d " , & p );     printf ( "enter the path matrix: " );     for ( i = 1 ; i <= p ; i ++ )     {         for ( j = 1 ; j <=

Knapsack 0/1

 Knapsack 0/1 #include <stdio.h> void sort ( int n , float p [] , float w [] , float v [] ) {     int i , j , temp ;     for ( i = 0 ; i < n ; i ++ )     {         for ( j = i + 1 ; j < n ; j ++ )         {             if ( p [ i ] < p [ j ])             {                 temp = p [ j ];                 p [ j ] = p [ i ];                 p [ j ] = temp ;                 temp = w [ j ];                 w [ j ] = w [ i ];                 w [ i ] = temp ;                                 temp = v [ j ];                 v [ j ] = v [ i ];                 v [ j ] = temp ;             }         }     } } int knapsack ( float p [] , float v [] , float w [] , int n , int c ) {     int i ;       float t ;       for ( i = 0 ; i < n ; i ++ )      {         if ( t < c )         {             if (( t + w [ i ]) > c )             {                 w [ i ] = c - t ;                 v [ i ] = w [ i ] * p [ i ];                 t = c ;             }             else

MaxMin

 Maxmin #include <stdio.h> int a [ 100 ]; int max , min ; void max_min ( int i , int j ) {     int max1 , min1 , mid ;     if ( i == j ) {         max = min = a [ i ];     } else {         if ( i == j - 1 ) {             if ( a [ i ] < a [ j ]) {                 max = a [ j ];                 min = a [ i ];             } else {                 max = a [ i ];                 min = a [ j ];             }         } else {             mid = ( i + j ) / 2 ;             max_min ( i , mid );             max1 = max ;             min1 = min ;             max_min ( mid + 1 , j );             if ( max < max1 )                 max = max1 ;             if ( min > min1 )                 min = min1 ;         }     } } int main () {     int n , i ;     printf ( "Enter the total number of elements in the array: " );     scanf ( " %d " , & n );     printf ( "Enter the array elements: " );     for ( i

Fractional Knapsack

 Fractional Knapsack #include <stdio.h> #include <stdlib.h> typedef struct {     double value ;     double weight ; } Item ; int compare ( const void * a , const void * b ) {     Item * itemA = ( Item * ) a ;     Item * itemB = ( Item * ) b ;     double ratioA = itemA -> value / itemA -> weight ;     double ratioB = itemB -> value / itemB -> weight ;     if ( ratioA > ratioB )         return - 1 ;     else if ( ratioA < ratioB )         return 1 ;     else         return 0 ; } double fractionalKnapsack ( int capacity , Item items [] , int n ) {     qsort ( items , n , sizeof ( Item ), compare );     double totalValue = 0.0 ;     int i ;     for ( i = 0 ; i < n ; i ++ ) {         if ( items [ i ]. weight <= capacity ) {             totalValue += items [ i ]. value ;             capacity -= items [ i ]. weight ;         } else {             totalValue += ( capacity / items [ i ]. weight ) *

Merge Sort

 Merge Sort #include <stdio.h> void merge ( int A [] , int mid , int low , int high ) {     int i , j , k , B [ 100 ];     i = low ;     j = mid + 1 ;     k = low ;     while ( i <= mid && j <= high )     {         if ( A [ i ] < A [ j ])         {             B [ k ] = A [ i ];             i ++ ;             k ++ ;         }         else         {             B [ k ] = A [ j ];             j ++ ;             k ++ ;         }     }     while ( i <= mid )     {         B [ k ] = A [ i ];         k ++ ;         i ++ ;     }     while ( j <= high )     {         B [ k ] = A [ j ];         k ++ ;         j ++ ;     }     for ( int i = low ; i <= high ; i ++ )     {         A [ i ] = B [ i ];     } } void mergeSort ( int A [] , int low , int high ) {     int mid ;     if ( low < high )     {         mid = ( low + high ) / 2 ;         mergeSort ( A , low , mid );         mergeSort ( A , mid + 1 , high

Quick Sort

 Program of Quick Sort #include <stdio.h> void printArray ( int A [] , int n ) {     for ( int i = 0 ; i < n ; i ++ )     {         printf ( " %d " , A [ i ]);     }     printf ( " \n " ); } int partition ( int A [] , int low , int high ) {     int pivot = A [ low ];     int i = low + 1 ;     int j = high ;     int temp ;     do     {         while ( A [ i ] <= pivot )         {             i ++ ;         }         while ( A [ j ] > pivot )         {             j -- ;         }         if ( i < j )         {             temp = A [ i ];             A [ i ] = A [ j ];             A [ j ] = temp ;         }     } while ( i < j );     temp = A [ low ];     A [ low ] = A [ j ];     A [ j ] = temp ;     return j ; } void quickSort ( int A [] , int low , int high ) {     int partitionIndex ;     if ( low < high )     {         partitionIndex = partition ( A , low , high );         quickSort (