logo

Algoritmi C-kielellä

Algoritmi on joukko ohjeita, jotka suoritetaan ennalta määrätyssä järjestyksessä ongelman ratkaisemiseksi tai työn suorittamiseksi. Funktio on koodilohko, jota voidaan kutsua ja suorittaa ohjelman muista osista.

Joukko ohjeita ongelman ratkaisemiseksi tai tietyn toiminnan suorittamiseksi. Tietojenkäsittelytieteessä algoritmeja käytetään monenlaisiin operaatioihin perusmatematiikasta monimutkaiseen tietojenkäsittelyyn.

Yksi yleisimmistä C:ssä käytetyistä algoritmeista on lajittelualgoritmi. Lajittelualgoritmi järjestää kohteiden kokoelman tiettyyn järjestykseen, kuten numeerisesti tai aakkosjärjestykseen.

Lajittelualgoritmeja on monia, joista jokaisella on etuja ja haittoja. C:n yleisimmät lajittelualgoritmit ovat pikalajittelu, yhdistäminen ja lajittelu.

Yksi C:n tärkeimmistä ominaisuuksista on osoittimen tuki. Tämä mahdollistaa tietorakenteiden, kuten taulukoiden, jonojen jne. tehokkaan manipuloinnin. Tämä tekee siitä sopivan sellaisten algoritmien toteuttamiseen, jotka vaativat monimutkaista tiedonkäsittelyä, kuten lajittelua ja algoritmista hakua.

Yksi kuuluisimmista esimerkeistä C:ssä toteutetuista ohjelmistokirjastoista on Standard Template Library (STL). Tämä kirjasto tarjoaa laajan valikoiman algoritmeja tehtäviin, kuten tietorakenteiden lajitteluun, etsimiseen ja käsittelyyn.

Algoritmin ominaisuudet

Se määrittelee useita tärkeitä algoritmin ominaisuuksia, mukaan lukien:

    Tulot: Algoritmien on vastaanotettava syötteitä, jotka voidaan esittää arvoina tai datana.Lähtö: Algoritmin pitäisi tuottaa jonkin verran tulosta. Se voi olla seurausta ongelmasta tai sen ratkaisemiseksi suunniteltu ratkaisu.Selkeys: Algoritmit on määriteltävä tarkasti käyttäen yksiselitteisiä ohjeita, joita tietokone tai muu järjestelmä voi noudattaa yksiselitteisesti.rajallisuus: Algoritmi vaatii rajoitetun vaiheen. Se tarkoittaa, että se pitäisi sulkea tietyn määrän komentoja suorittamisen jälkeen.Voimassaolo: Algoritmin on oltava kelvollinen. Toisin sanoen sen pitäisi pystyä tuottamaan ratkaisu ongelmaan, joka algoritmin on tarkoitus ratkaista kohtuullisessa ajassa.Tehokkuus:Algoritmin on oltava tehokas, eli sen on kyettävä tuottamaan ratkaisu ongelmaan, jonka se on suunniteltu ratkaisemaan kohtuullisessa ajassa.Yleisyys:Algoritmin on oltava yleinen, mikä tarkoittaa, että sitä voidaan soveltaa useisiin ongelmiin sen sijaan, että se olisi spesifinen yksittäiselle ongelmalle.

Algoritmianalyysi

Algoritminen analyysi on prosessi, jossa arvioidaan algoritmin suorituskykyä tehokkuuden, monimutkaisuuden ja muiden kriteerien suhteen. Yleensä tämä tehdään useiden algoritmien arvioimiseksi ja optimaalisen ratkaisun valitsemiseksi tietylle ongelmalle tai ohjelmistolle.

Algoritmien analysointiin kuuluu yleensä niiden ajan ja tilan monimutkaisuuden mittaaminen.

Kuten tilan monimutkaisuus, joka kuvaa tarvittavan muistin tai levytilan määrää, aikamonimutkaisuus kuvaa kuinka kauan algoritmi määrittää tehtävän suorittamiseen.

On olemassa erilaisia ​​tapoja analysoida algoritmien aikamonimutkaisuutta, kuten Big O ja Omega-merkintä. Omega-symboli tarjoaa ylärajan algoritmin aikakompleksisuudelle, kun taas Omega-symboli tarjoaa alarajan.

Ajan ja tilan monimutkaisuuden mittaamisen lisäksi algoritmianalyysi sisältää myös muita kriteerejä, kuten stabiilisuuden, rinnakkaisuuden ja skaalautuvuuden.

    Vakaus:- Tämä viittaa algoritmin kykyyn säilyttää tietojoukon elementtien suhteellinen järjestys.Rinnakkaisu:- Tämä viittaa kykyyn suorittaa toimintoja rinnakkain useiden prosessorien välillä.Skaalautuvuus:- Toisaalta se viittaa algoritmin kykyyn käsitellä suuria tietomääriä ja muita syötteitä.

Ne sisältävät kahdenlaisia ​​analyyseja.

he ovat:-

  1. Ennakkoanalyysi.
  2. Jälkimmäinen analyysi.

Aiempi analyysi

Prior on algoritmianalyysimenetelmä, joka keskittyy algoritmin suorituskyvyn arvioimiseen sen matemaattisten ominaisuuksien perusteella suorittamatta algoritmia.

Tämän lähestymistavan avulla voit analysoida algoritmien ja muiden mittareiden aika- ja tilamonimutkaisuutta ilman, että sinun tarvitsee toteuttaa ja ajaa algoritmeja.

Jälkimmäinen analyysi

Posterior-analyysi puolestaan ​​on algoritmianalyysimenetelmä, joka todella suorittaa algoritmin ja mittaa sen suorituskykyä.

Tämä lähestymistapa tarjoaa tarkempaa ja yksityiskohtaisempaa tietoa algoritmin suorituskyvystä, mutta vaatii algoritmin toteuttamisen ja suorittamisen.

Algoritmin monimutkaisuus

Algoritminen monimutkaisuus on mitta, jolla mitataan algoritmin tehokkuutta ja suorituskykyä. Algoritmeja arvioidaan yleensä ajan ja tilan suhteen, joka tarvitaan ongelman ratkaisemiseen tai tietyn tavoitteen saavuttamiseen.

Algoritmin monimutkaisuudessa käytetään kahta tekijää.

he ovat:-

  1. Aikatekijä.
  2. Tilatekijä.

Aikatekijä

  • Aikaa, jonka algoritmi tarvitsee tehtävän suorittamiseen, kutsutaan aikakompleksisuudeksi. Se mitataan yleensä niiden toimintojen tai vaiheiden lukumäärällä, jotka algoritmin on suoritettava ratkaistakseen ongelman.
  • Algoritmin ajallinen monimutkaisuus on tärkeä, koska se määrittää, kuinka kauan sen suorittaminen kestää, ja sillä voi olla merkittävä vaikutus ohjelman ja järjestelmän suorituskykyyn.
  • Algoritmin aikamonimutkaisuus voidaan ilmaista käyttämällä Big O -merkintää, tapaa ilmaista algoritmin aikamonimutkaisuuden yläraja.
  • Algoritmi, jonka aikamonimutkaisuus on O(n), tarkoittaa, että algoritmin suorittamiseen tarvittava aika on suoraan verrannollinen syöttödatan kokoon (n).
  • Muita yleisiä aikakompleksisuuksia ovat O(n^2) neliöllinen kompleksisuus ja O(log n) logaritminen kompleksisuus.

Avaruusanalyysi

  • Toisaalta tilan monimutkaisuus viittaa muistin tai tallennustilan määrään, joka tarvitaan algoritmin suorittamiseen.
  • Tämä on tärkeää, koska se määrittää resurssien määrän, joka tarvitaan sellaisten algoritmien suorittamiseen, jotka voivat vaikuttaa sovelluksesi tai järjestelmän yleiseen suorituskykyyn.
  • Jos algoritmin tilamonimutkaisuus on O(n), se käyttää muistia, joka kasvaa lineaarisesti syötteen koon mukaan.
  • Jos algoritmin tilakompleksisuus on O(1), se käyttää kiinteää määrää muistia tulon koosta riippumatta.

Kuinka kirjoittaa algoritmi

1. Määritä ensin ongelma, jonka haluat algoritmin ratkaisevan.

Oletetaan esimerkiksi, että haluamme kirjoittaa algoritmin enimmäisarvon löytämiseksi numeroluettelosta.

2. Jaa ongelma pienempiin, hallittavissa oleviin vaiheisiin.

  • Alusta 'max'-muuttuja luettelon ensimmäiseksi arvoksi.
  • Vertaa jokaista luettelon seuraavaa arvoa arvoon 'max'.
  • Jos arvo on suurempi kuin 'max', aseta 'max' tälle arvolle.
  • Jatka tätä, kunnes jokaista luettelon arvoa on verrattu.
  • Palauttaa lopullisen enimmäisarvon.

3. Kirjoita algoritmisi pseudokoodilla tai ohjelmointikielellä.

Pseudokoodilla kirjoitettu algoritmi:

 MAX (list) max = list[0] For i = 1 the length of the list list IF[i] > max max = list[i] End for Maximum return Maximum end 

4. Testaa algoritmiasi varmistaaksesi, että se on oikea ja tehokas.

Voit testata algoritmia syöttämällä erilaisia ​​numeroluetteloita ja varmistamalla, että se palauttaa suurimman oikean arvon. Voit myös analysoida algoritmisi aikamonimutkaisuutta määrittääksesi, kuinka hyvin se skaalautuu suurempia syötteitä varten.

Esimerkki: -

Syöte: [1, 5, 2, 7, 3]

Lähtö: 7.

Selitys: 7 on luettelon suurin arvo.

5. Optimoi algoritmi.

Etsi tapoja optimoida algoritmeja tehdäksesi niistä nopeampia ja tehokkaampia. Tämä voi sisältää pseudokoodin muokkaamisen tai tehokkaampien tietorakenteiden tai algoritmien toteuttamisen.

Internetin haittoja

Algoritmien peruskirjoitus

Esimerkki: - Kahden kokonaisluvun summa.

Vaihe 1 - Aloittaa

Vaihe 2 - Määritä kolme kokonaislukua a, b, c

Vaihe 3 - Määritä a:n ja b:n arvot

Vaihe 4 - Lisää a:n ja b:n arvot

Vaihe 5 - Tallenna vaiheen 4 tulos kohtaan c

Vaihe 6 - Tulosta c

Vaihe 7 - Lopettaa

C-kielessä käytettyjen algoritmien tyyppi.

1. Lajittelualgoritmit

C tarjoaa runsaasti tietotyyppejä ja operaattoreita, joita voidaan käyttää toteuttamaan erilaisia ​​lajittelualgoritmeja, kuten kuplalajittelu, lisäyslajittelu ja pikalajittelu.

Nämä algoritmit ovat hyödyllisiä monissa sovelluksissa, koska niitä voidaan käyttää erikokoisten ja -tyyppisten tietojen lajitteluun.

Lajittelualgoritmeja on erilaisia.

he ovat:-

(i) Kuplalajittelu: Yksinkertainen lajittelualgoritmi, joka vertaa lähellä olevia komponentteja toistuvasti ja kytkee ne pois päältä, jos ne ovat epäkunnossa.

Kuplalajittelun algoritmi on:

  1. Aloita lajittelemattomalla elementtiluettelolla.
  2. Vertaa luettelon kahta ensimmäistä elementtiä. Jos ensimmäinen elementti on suurempi kuin toinen elementti, vaihda ne.
  3. Siirry seuraavaan elementtipariin ja toista vaihe 2, kunnes luettelon loppu on saavutettu.
  4. Toista vaiheet 2 ja 3 vielä kerran jokaisen luettelon kohteen kohdalla. jota kutsutaan passiksi.
  5. Toista vaiheet 2-4 koko luettelolle. Kun toistat kulkua, elementit 'kuplituvat' oikeaan paikkaansa järjestetyssä luettelossa.
  6. Kun passi on suoritettu eikä vaihtoja ole tehty, luettelo lajitellaan ja algoritmi voi pysähtyä.
  7. Lopullinen lajiteltu luettelo palautetaan.

(ii) Lisäyslajittelu : lajittelumenetelmä, joka luo lajitellun luettelon yksittäinen elementti kerrallaan sijoittamalla kukin oikeaan kohtaan.

Lajittelun lisäysalgoritmi on: -

  1. Alusta tyhjä lajiteltu luettelo ja lajittelemattomien elementtien luettelo.
  2. Lajittelemattoman luettelon ensimmäinen jäsen tulee ottaa ja sijoittaa sopivaan kohtaan lajitetussa luettelossa.
  3. Toista vaihe 2 jokaiselle lajittelemattoman luettelon seuraavalle elementille.
  4. Vertaa nykyistä elementtiä lajitellun luettelon elementteihin aloittaen heti vasemmalla olevasta elementistä.
  5. Vaihda kaksi elementtiä, jos nykyinen elementti on pienempi kuin sen vasemmalla oleva elementti.
  6. Jos nykyinen elementti on suurempi kuin sen vasemmalla oleva elementti, lisää se oikeaan kohtaan lajiteltuun luetteloon.
  7. Toista vaiheet 4-6 jokaiselle lajittelemattoman luettelon seuraavalle elementille.
  8. Kun kaikki elementit on käsitelty, lajiteltu luettelo sisältää kaikki elementit oikeassa järjestyksessä.
  9. Lajitteluprosessi on valmis.

(iii) Valinnan lajittelu : lajittelumenetelmä, joka aloittaa järjestetyn listauksen johdonmukaisesti pienimmällä yksityiskohdalla järjestämättömästä listauksesta.

Valinnan algoritmi on: -

  1. Aloita asettamalla listan ensisijainen elementti minimielementiksi.
  2. Toista luettelon jäljellä olevat kohteet ja vertaa niitä nykyiseen minimiin.
  3. Aseta uusi minimiarvo, jos elementin havaitaan olevan pienempi kuin nykyinen.
  4. Muuta nykyinen minimi luettelon ensimmäiseksi elementiksi aina, kun se saavuttaa johtopäätöksensä.
  5. Listauksen jäljellä olevan lajittelemattoman osan kohdalla toista vaiheet 2–4, mutta aloita luettelon toisesta kohdasta (koska ensimmäinen elementti on jo lajiteltu).
  6. Jatka luettelon lajittelua tällä tavalla, kunnes se on kaikki lajiteltu.

(iv) Nopea lajittelu : Jaa ja hallitse -lajittelualgoritmi, joka valitsee pivot-elementin ja jakaa luettelon alaluetteloiksi sen mukaan, ovatko elementit vähemmän vai enemmän kuin pivot. Tämän jälkeen aliluettelot lajitellaan toistuvasti, kunnes koko luettelo on lajiteltu.

Nopean lajittelun algoritmi on:

  1. Valitse pivot-elementti luettelosta. Tämä on tyypillisesti ensimmäinen elementti, mutta se voi olla myös satunnainen elementti tai listan mediaani.
  2. Jaa luettelo kahteen alaluetteloon: toinen sisältää pivotia pienempiä elementtejä ja toinen pivotia suurempia elementtejä.
  3. Lajittele rekursiivisesti aliluettelo, joka sisältää vähemmän elementtejä kuin pivot, käyttämällä samaa prosessia.
  4. Käytä samaa menettelyä lajitellaksesi rekursiivisesti pivotia suurempien merkintöjen aliluettelon.
  5. Liitä lajitellut aliluettelot pivot-elementillä niiden väliin, jolloin muodostuu täysin lajiteltu luettelo.
  6. Palauta täysin lajiteltu luettelo.

(v) Erä menee : Jaa ja hallitse -lajittelualgoritmi jakaa luettelon kahteen puolikkaaseen, lajittelee molemmat puolikkaat ja yhdistää sitten kaksi puoliskoa lajiteltuun järjestykseen.

Yhdistä-lajittelu-algoritmi:

  1. Tee luettelosta kaksi aliluetteloa: yksi pivotin alapuolella ja toinen pivotin yläpuolella.
  2. Tuottaa uuden lajitellun aliluettelon yhdistämällä aliluetteloita iteratiivisesti, kunnes on olemassa vain yksi aliluettelo. Tämä on lajiteltu luettelosi.
  3. Vaiheet kahden alihakemiston yhdistämiseksi:-
  4. Luo tyhjä luettelo lajiteltujen elementtien säilyttämistä varten.
  5. Vertaa kunkin aliluettelon ensimmäistä elementtiä.
  6. Lisää pienemmän elementin uuteen luetteloon ja poistaa sen ylätason aliluettelosta.
  7. Toista vaiheet 2 ja 3, kunnes luettelo on täysin tyhjä.
  8. Lisää loput elementit muista aliluetteloista uuteen luetteloon.
  9. Korvaa yhdistetyn aliluettelon uudella lajitetulla luettelolla.
  10. Toista tämä prosessi, kunnes kaikki alaluettelot on yhdistetty yhdeksi lajiteltuun luetteloon.

(vi) Keon lajittelu : Lajittelualgoritmi, joka lajittelee elementit käyttämällä tietorakennetta nimeltä pino.

Tämä on luokittelualgoritmi:

    Rakenna maksimikasa: Alkaen ensimmäisestä ei-lehtisolmusta, vertaa jokaista solmua sen alisolmuihin ja korvaa solmut suurimmalla lapsisolmulla maksimikeon ominaisuuden täyttämiseksi.Vaihda juuri viimeisen elementin kanssa: Vaihda juuri (suurin elementti) pinon viimeisen elementin kanssa.
  1. Pinoa loput elementit. Juuresta alkaen jokaista solmua verrataan sen lapsiin, vaihtaen solmuja vanhempiensa lasten kanssa, kunnes max kason ominaisuus täyttyy.
  2. Toista vaiheet 2 ja 3 äskettäin pinottujen elementtien kanssa, paitsi että viimeinen elementti on oikeassa paikassa.
  3. Toista tätä, kunnes pinossa on jäljellä vain yksi elementti. Tämä on nyt järjestetty.
  4. Kasaa alas: Aloittaen juurisolmusta, se vertaa elementtejä lapsiinsa ja vaihtaa suuremman kanssa, kunnes max heap -ominaisuus täyttyy.Kasata kasaan: Aloita keon viimeisestä elementistä, vertaa sitä yläelementtiin ja vaihda se yläelementin kanssa maksimikeon ominaisuuden täyttämiseksi.

(vii) Radix-lajittelu : Lajittelualgoritmi, joka lajittelee elementit niiden binääriesityksen numeroiden tai numeroiden perusteella.

Radix-lajittelun algoritmi on:

  1. määrittää, kuinka monta numeroa syöteluettelon suurin elementti sisältää.
  2. Alusta muuttuja, esimerkiksi numeropaikka, 1:ksi, joka edustaa nykyistä numeropaikkaa.
  3. Luo tyhjä lista jokaiselle mahdolliselle numeroarvolle 0–9.
  4. Toista syöttöluetteloa ja lisää jokainen elementti sopivaan luetteloon nykyisen numeropaikan arvon perusteella.
  5. Yhdistä kaikki luettelot yhteen muodostamaan uusi luettelo numeroluetteloiden järjestyksessä.
  6. Kerro digitPlace 10:llä siirtyäksesi seuraavaan numeroon.
  7. Toista vaiheet 4-6 jokaiselle numeropaikalle, kunnes kaikki suurimman elementin numerot on otettu huomioon.
  8. Lopullinen luettelo lajitellaan nousevaan järjestykseen elementtien numeroiden mukaan.
  9. Palauta lopullinen lajiteltu luettelo.

2. Hakualgoritmit

C tarjoaa myös työkalut, joita tarvitaan erilaisten hakualgoritmien, kuten lineaarihaun ja binäärihaun, toteuttamiseen. Nämä algoritmit voivat löytää nopeasti tietyt kohteet tietojoukosta, mikä tekee niistä hyödyllisiä monenlaisissa sovelluksissa.

Hakualgoritmeja on monenlaisia.

He ovat:-

(i) Lineaarinen haku : Perushakualgoritmi, joka tutkii luettelon jokaisen kohteen yksitellen, kunnes se löytää halutun kohteen.

Lineaarisen haun algoritmi: -

  1. Määrittele algoritmin syöte: Lineaarisen hakualgoritmin syöte on lista elementeistä (tai matriisi) ja kohdeelementti, jota etsimme.
  2. Alusta muuttuja nimeltä 'index' arvoon -1: Tätä muuttujaa käytetään kohdeelementin indeksin tallentamiseen, jos se löytyy.
  3. Selaa elementtiluetteloa: Tarkista ensimmäisestä elementistä alkaen jokainen luettelon elementti yksitellen.
  4. Vertaa nykyistä elementtiä arvioitavaan elementtiin: Säilytä nykyisen elementin indeksi indeksimuuttujassa ja poistu silmukasta, jos moderni elementti ja tavoiteelementti ovat identtisiä.
  5. Palauta kohdeelementin indeksi: Kun silmukka on valmis, palauta indeksimuuttujaan tallennettu arvo. Jos kohdeelementtiä ei löydy, indeksin arvo on -1.

(ii) Binäärihaku : Hakualgoritmi, joka toimii jakamalla listan puolikkaaksi ja hakemalla näiden puoliskojen sisällä, sisältää todennäköisemmin elementin.

Algoritmi binäärihakuun:-

  1. Syöte: Lajiteltu luettelo n elementistä ja kohdeelementti x.
  2. Muuttujien alustaminen: Aseta matalaksi indeksiksi 0, korkeaksi indeksiksi n-1 ja keskiarvoksi (matala+korkea)/2.
  3. Aloita silmukka: Kun alhainen indeksi on pienempi tai yhtä suuri kuin korkea indeksi, toista seuraavat vaiheet.
  4. Vertaa keskielementtiä x:ään: Jos keskielementti on yhtä suuri kuin x, palauta keskiindeksi.
  5. Päivitä alhainen tai korkea indeksi: Jos x on suurempi kuin keskielementti, aseta matalaksi indeksiksi keski + 1. Muussa tapauksessa aseta korkeaksi indeksiksi keski - 1.
  6. Päivitä keskiindeksi: Keski = (matala+korkea)/2.
  7. Silmukan loppu: Jos alhainen indeksi on suurempi kuin korkea indeksi, x ei ole luettelossa ja algoritmi palauttaa virheen.
  8. Tulos: X:n indeksi luettelossa tai virheviestissä.

(iii) Syvyys-ensimmäinen haku : Hakualgoritmi, joka tutkii jokaisen haaran niin pitkälle kuin mahdollista ennen kääntymistä.

Seuraavat ohjeet koskevat syvällistä hakua:

  1. valitse graafin aloituspiste tai solmu aloittaaksesi.
  2. Lisää vierailumerkki ensimmäiseen kärkeen.
  3. Aseta aloituspiste suoraan pinoon.
  4. Toista seuraavat toimet, kunnes pino on tyhjä: -
    • Poista pinon yläpiste.
    • Merkitse käydyksi ja lisää pinoon jokainen ponnahduspisteen vierailematon naapuri.
  5. Jatka tätä prosessia, kunnes kaikki graafin kärjet on käyty.
  6. Kun kaikki kärjet on käyty, algoritmi on valmis ja kaaviossa suoritetaan syvyysensimmäinen haku.

(iv) Leveyshaku : Hakualgoritmi, joka tutkii kaikki solmun naapurit ennen siirtymistä seuraavalle tasolle.

Leveyshaun algoritmi on: -

  1. Aloita juurisolmusta tai alkutilasta.
  2. Lisää juurisolmu jonoon.
  3. Tarkista, onko jono tyhjä; jos kyllä, lopeta algoritmi.
  4. Ota ensimmäinen elementti jonosta ja merkitse se käydyksi.
  5. Vahvista nykyaikaista solmua lisäämällä kaikki sen vierailemattomat naapurit jonoon.
  6. Toista vaiheet 3–5, kunnes haluttu solmu löytyy tai jono on tyhjä.
  7. Palauta polku alustavasta tilasta kohdetilaan, jos tavoitesolmu löytyy.
  8. Lopeta sääntöjoukko ja ilmoita, että tavoitetilaa ei tunnistettu, jos jono on tyhjä.

(v) Interpolaatiohaku : Hakualgoritmi, joka käyttää haettujen elementtien arvoja arvioidakseen sijainnin indeksissä.

On tärkeää, että taulukko jakautuu tasaisesti. Muuten se on algoritmi.

Se toimii odotetusti.

Algoritmi voidaan tiivistää seuraavasti.

  1. Hanki syöteluettelo ja avainarvo hakua varten.
  2. Alusta alempi ja ylempi muuttuja luettelon ensimmäisessä ja viimeisessä indeksissä.
  3. Jos alempi arvo on pienempi tai yhtä suuri kuin suurempi arvo, niin:-
    1. Laske arvioitu sijainti käyttämällä seuraavaa kaavaa:
      pos = matala + ((korkea - matala) / (arr[high] - arr[low])) * (x - arr[low]).
    2. Palauta sijainti, jos arvioitu sijaintiarvo on avainarvo.
    3. c) Jos arvioitu sijaintiarvo on pienempi kuin avaimen arvo, aseta se pienemmäksi.
      Sijainti + 1.
    4. d) Jos arvioidun sijainnin arvo on suurempi kuin avaimen asetusarvo, asema - 1 ylöspäin.
  4. Jos avaimen arvoa ei löydy, palauta -1 osoittaaksesi, että arvo ei ole luettelossa.

(vi) Hyppyhaku : Hakumenetelmä, joka toistuu luettelossa vakiopituisin askelin, kunnes se löytää relevantin elementin tai määrittää, ettei sitä enää ole.

Hyppyhakualgoritmi on seuraava:

  1. Aseta ensin hypyn kooksi taulukon elementtien lukumäärän neliöjuuri.
  2. Asettaa muuttujan nimeltä 'current' taulukon ensimmäiseksi elementiksi.
  3. Iteroi taulukon yli hyppäämällä hypyn koon mukaan samalla kun lisäämällä muuttujaa nimeltä 'hyppy'.
  4. Siirry seuraavaan harppaukseen, jos olemassa oleva elementti on pienempi kuin haluttu elementti.
  5. Jos nykyinen elementti on suurempi kuin kohdeelementti, suorita lineaarinen haku nykyisen elementin ja edellisen hyppyelementin välillä löytääksesi kohdeelementin.
  6. Jos kohdeelementtiä ei löydy taulukosta, se palauttaa -1 osoittaakseen, että se ei ole taulukossa.
  7. Jos elementti löytyy, se palauttaa elementin indeksin taulukossa.

3. Graafialgoritmit

C:n tuki osoittimille ja tietorakenteille, kuten taulukoille ja linkitetyille listoille, tekee siitä sopivan sellaisten algoritmien toteuttamiseen, jotka käsittelevät kaavioita, kuten lyhimmän polun löytäminen kaavion kahden solmun välillä.

Graafialgoritmeja on erilaisia.

he ovat:-

    Dijkstran algoritmi: Algoritmi, joka löytää lyhimmän polun kaavion kahden solmun välillä päivittämällä jatkuvasti lyhimmän etäisyyden kustakin solmusta.Algoritmi A*: Menetelmä, joka päivittää jatkuvasti lyhimmän reitin jokaiseen kaavion solmuun määrittääkseen lyhimmän reitin niiden välillä.Primin algoritmi: Lähestymistapa painotetun yhdistetyn graafin pienimmän virittävän puun selvittämiseksi.Kruskalin algoritmi: Lähestymistapa linkitetyn painotetun graafin alimman virittävän puun tunnistamiseksi.Bellman-Ford -algoritmi: Algoritmi, joka näyttää lyhimmän reitin tietyn tarjontasolmun ja verkon jokaisen muun solmun välillä, vaikka kuvaajan reunapainot olisivat negatiivisia.

4. Salausalgoritmit

C tukee matalan tason operaatioita ja tehokasta tiedonkäsittelyä, mikä tekee siitä ihanteellisen kryptografiassa käytettävien algoritmien, kuten tietojen salaus- ja salauksenpurkualgoritmien, toteuttamiseen.

Salausalgoritmeja on erilaisia.

He ovat:-

    Hash-algoritmit: Nämä algoritmit tuottavat kiinteän kokoisia tulosteita (hash) mielivaltaisen kokoisista tuloista. Esimerkkejä ovat MD5, SHA-1 ja SHA-2.Symmetrinen avainalgoritmit: Tällaisten algoritmien salaus- ja salauksenpurkuvaiheet käyttävät samaa yksityistä avainta. AES, DES ja Blowfish ovat muutamia esimerkkejä.Epäsymmetriset avainalgoritmit: Julkista avainta ja ei-julkista avainta käytetään näissä menetelmissä erillisinä avaimina salaukseen ja salauksen purkamiseen. Joitakin esimerkkejä ovat RSA, ECC ja DSA.Avainten vaihtoalgoritmit: Näiden algoritmien avulla kaksi osapuolta voivat vaihtaa avaimia suojaamattoman kanavan kautta turvallisesti. Esimerkiksi Diffie-Hellman ja Elliptic Curve Diffie-Hellman voidaan mainita.

Algoritmin edut

Algoritmeilla on monia etuja.

he ovat:-

    Nopeus ja tehokkuus: Algoritmit voivat käsitellä suuria tietomääriä nopeasti ja tarkasti, mikä tekee niistä hyödyllisiä tehtävissä, jotka ovat liian aikaa vieviä tai virhealttiita ihmisten suoritettavaksi.Johdonmukaisuus: Algoritmit noudattavat ennalta määritettyjä ohjeita. Se voi tuottaa johdonmukaisia ​​tuloksia ilman, että henkilökohtaiset ennakkoluulot ja tunteet vaikuttavat siihen.Automaatio: Algoritmit voivat suorittaa tehtäviä automaattisesti, jolloin ihmiset voivat keskittyä monimutkaisempiin tai luovampiin tehtäviin.Lisääntynyt tarkkuus: Algoritmit voivat usein saavuttaa korkeamman tarkkuuden kuin ihmiset, varsinkin kun käsitellään suuria tietomääriä.Parempi päätöksenteko: Algoritmit auttavat meitä tekemään tietoisempia ja objektiivisempia päätöksiä analysoimalla tietoja ja tunnistamalla malleja ja trendejä, jotka eivät ole helposti ihmisten havaittavissa.Skaalautuvuus: Algoritmeja voidaan helposti skaalata ylös tai alas vastaamaan muuttuvia vaatimuksia ja työkuormia.

Algoritmin haitat

Algoritmit ovat erittäin hyödyllisiä ohjelmoinnissa, mutta algoritmeilla on haittoja.

15/100,00

he ovat:-

    Rajoitettu laajuus: Algoritmit voivat ratkaista ongelmia vain niiden laajuudessa, eivätkä ne välttämättä pysty ratkaisemaan monimutkaisia ​​tai abstrakteja ongelmia.Puolueellisuus: Algoritmit voivat säilyttää ja vahvistaa harhoja harjoitteluun käytetyissä tiedoissa, mikä johtaa epäreiluihin tuloksiin.Riittämätön läpinäkyvyys: Monet algoritmit kätkevät prosessin, jonka kautta he tekevät johtopäätöksiään. Tämä voi vaikeuttaa tulosten ajattelemista tai tarkistamista.Tietojen tarkkuuteen luottaminen:Sääntösarjan oikeellisuus riippuu suuresti opetuksessa käytettävien tietojen tarkkuudesta ja soveltuvuudesta. Epätarkat tai epätarkat vaikutukset voivat johtua virheellisistä tiedoista.hillitty sopeutumiskyky:Algoritmit on suunniteltu noudattamaan ohjeita, eivätkä ne mukaudu muuttuviin olosuhteisiin ja olosuhteisiin.