Algartam Greedy (Greedy Algorithm) i Java: Mínithe le Samplaí

Teicníc barrfheabhsaithe i Java ríomhchlárú is ea an Algartam Greedy arb é is sainairíonna ann an réiteach is fearr a roghnú ag gach céim gan féachaint siar ná machnamh a dhéanamh ar an todhchaí. In ionad an spás stáit iomlán a scrúdú, roghnaíonn an algartam seo an rogha reatha is fearr agus tá súil aige go dtiocfaidh réiteach optamach domhanda dá bharr.

Conas a Oibríonn an Algartam Greedy

  1. Céim 1: Tosaigh ón stát tosaigh.

  2. Céim 2: Ag gach céim, roghnaíonn an algartam an rogha is fearr i measc na roghanna atá ar fáil bunaithe ar fheidhm mheastóireachta.

  3. Céim 3: Bogann an algartam go stát nua ag roghnú an rogha is fearr.

  4. Céim 4: Leanann an próiseas ar aghaidh go dtí go gcomhlíontar coinníoll foirceanta nó nach bhfuil níos mó roghanna le roghnú astu.

  5. Céim 5: Fill ar an réiteach aimsithe.

Buntáistí agus Míbhuntáistí an Algartam Greedy

Buntáistí:

  • Simplíocht: Éasca le tuiscint agus le cur i bhfeidhm.
  • Éifeachtúlacht: Is minic a éilíonn níos lú ama ríomha agus cuimhne i gcomparáid le roinnt halgartaim optamaithe eile.
  • Ideal d'fhadhbanna suboptimal: Oiriúnach d'fhadhbanna nuair a bhíonn breithniú ar gach féidearthacht ró-chasta.

Míbhuntáistí:

  • Gan ráthaíocht optamach domhanda: Féadfaidh an t-algartam stop a chur le réiteach optamach áitiúil gan teacht ar an réiteach domhanda is fearr.
  • Easpa fadbhreathnaitheachta: Is minic nach ndéanann an t-algartam iarmhairtí na gcinntí roimhe seo a mheas.

Sampla agus Míniú

Sampla coitianta den Algartam Greedy is ea an fhadhb "Kth Largest Element" a aimsiú. Feicfimid conas a oibríonn an algartam seo:

import java.util.Arrays;  
  
public class GreedyAlgorithmExample {  
    static int findKthLargest(int[] nums, int k) {  
        Arrays.sort(nums); // Sort the array  
        return nums[nums.length- k]; // Return the kth largest element  
    }  
  
    public static void main(String[] args) {  
        int[] nums = {3, 1, 2, 4, 5};  
        int k = 2;  
        int result = findKthLargest(nums, k);  
        System.out.println("The " + k + "th largest element is: " + result);  
    }  
}  

Sa sampla thuas, úsáidimid an Algartam Greedy chun an dara eilimint is mó a fháil i sraith slánuimhreacha. Ní dhéanann an algartam seo ach an t-eagar a shórtáil agus an kth eilimint is mó a thabhairt ar ais. Cé nach bhfuil sé cinnte go mbeidh sé ar an mbarr is fearr ar domhan, is réiteach réasúnta maith é don fhadhb seo.