Fractional Knapsack Problem | DAA
Fractional Knapsack Problem A thief has a bag or knapsack that can contain the maximum weight W of his loot. There are n items and the weight of an ith item is wi and it worth vi. Any amount of item can be put into the bag i.e. xi fraction of item can be collected, where 0<=xi<=1. Here the objective is to collect the items that maximize the total profit earned. Here we arrange the items by ratio vi/wi. Algorithm GreedyFracKnapsack (W, n) { for (i = 1 ; i <= n; i++) { x [i] = 0.0 ; } tempW = W; for (i = 1 ; i <= n; i++) { if ( w [i] > tempW) then break ; x [i] = 1.0 ; tempW -= w [i]; } if (i <= n) x [i] = tempW / w [i]; } We can see that the above algorithm just contains a single loop i.e. no nested loops the running time for the above algorithm is O(n). However our requirement is that v[1 ... n] and w[1 ... n] are sorted, so we can use the sorting method to sort it in O(n log n