Jarvis-algoritmi (tai Jarvis-läpikulkualgoritmi tai lahjapakkausalgoritmi) määrittää joukon elementtejä, jotka muodostavat kuperan rungon tälle joukolle. Menetelmä voidaan kuvitella käärimällä laudalle lyöty naulasarja köydellä. Algoritmi ajaa ajassa , missä on pisteiden kokonaismäärä tasossa, on kuperan rungon pisteiden lukumäärä.
Olkoon joukko pisteitä annettu . Vasemmanpuoleisin alapiste otetaan alkupisteeksi (se löytyy tavanomaisen kaikkien pisteiden läpiviennin takaa), se on täsmälleen kuperan rungon yläosa. Seuraava piste ( ) on piste, jolla on pienin positiivinen napakulma suhteessa origopisteeseen. Tämän jälkeen jokaiselle pisteelle (2<i<=|P|) vastapäivään etsitään sellainen piste etsimällä jäljellä olevien pisteiden joukosta (+ alin vasen), jossa suurin viivojen ja välinen kulma on muodostunut . Se on kuperan rungon seuraava kärki. Tässä tapauksessa itse kulmaa ei haeta, vaan vain sen kosini etsitään säteiden välisen skalaaritulon kautta ja , jossa on viimeinen löydetty minimi, on edellinen minimi ja on seuraavan minimin ehdokas. Uusi minimi on piste, jossa kosini saa pienimmän arvon (mitä pienempi kosini, sitä suurempi sen kulma). Kuperan rungon kärkien etsiminen jatkuu, kunnes . Sillä hetkellä, kun kuperan rungon seuraava piste osuu yhteen ensimmäisen kanssa, algoritmi pysähtyy - kupera runko rakennetaan.
Silmukka (4) suoritetaan kerran, kun taas silmukka (a) suoritetaan joka kerta . Kaikki muut toiminnot suoritetaan . Siksi algoritmi toimii tai pahimmassa tapauksessa, kun kaikki pisteet putoavat kuperaan runkoon.