logo

Algoritmas C kalba

Algoritmas yra instrukcijų seka, kuri atliekama iš anksto nustatyta seka, siekiant išspręsti problemą arba užbaigti darbą. Funkcija yra kodo blokas, kurį galima iškviesti ir vykdyti iš kitų programos dalių.

Instrukcijų rinkinys, kaip išspręsti problemą arba atlikti tam tikrą veiklą. Informatikos moksle algoritmai naudojami įvairioms operacijoms – nuo ​​pagrindinės matematikos iki sudėtingo duomenų apdorojimo.

Vienas iš įprastų C naudojamų algoritmų yra rūšiavimo algoritmas. Rūšiavimo algoritmas sutvarko elementų rinkinį tam tikra tvarka, pavyzdžiui, skaitiniais arba abėcėlės tvarka.

Yra daug rūšiavimo algoritmų, kurių kiekvienas turi privalumų ir trūkumų. Dažniausi C rūšiavimo algoritmai yra greitas rūšiavimas, sujungimas ir rūšiavimas.

Viena iš pagrindinių C savybių yra rodyklės palaikymas. Tai leidžia efektyviai manipuliuoti duomenų struktūromis, pvz., masyvais, eilėmis ir tt. Dėl to jis tinkamas įgyvendinti algoritmus, kuriems reikalingas sudėtingas duomenų apdorojimas, pvz., rūšiavimas ir algoritminė paieška.

Vienas garsiausių programinės įrangos bibliotekos, įdiegtos C, pavyzdžių yra standartinė šablonų biblioteka (STL). Ši biblioteka siūlo daugybę algoritmų, skirtų tokioms užduotims kaip rūšiavimas, paieška ir duomenų struktūrų manipuliavimas.

Algoritmo ypatybės

Jis apibrėžia keletą svarbių algoritmo ypatybių, įskaitant:

    Įėjimai: Algoritmai turi gauti įvestis, kurios gali būti pateikiamos kaip reikšmės arba duomenys.Išvestis: Algoritmas turėtų sukurti tam tikrą išvestį. Tai gali būti problemos pasekmė arba sprendimas, skirtas jai išspręsti.Aiškumas: Algoritmai turi būti tiksliai apibrėžti, naudojant nedviprasmiškas instrukcijas, kurias kompiuteris ar kita sistema gali vienareikšmiškai vykdyti.Baigtumas: algoritmas reikalauja ribotų veiksmų. Tai reiškia, kad iš jo reikia išeiti įvykdžius tam tikrą skaičių komandų.Galiojimas: Algoritmas turi būti galiojantis. Kitaip tariant, jis turėtų sugebėti pateikti problemos sprendimą, kurį algoritmas yra skirtas išspręsti per pagrįstą laiką.Efektyvumas:Algoritmas turi būti efektyvus, tai reiškia, kad jis turi sugebėti išspręsti problemą, kuriai jis skirtas, per protingą laiką.Bendrumas:Algoritmas turi būti bendras, o tai reiškia, kad jis gali būti taikomas daugeliui problemų, o ne tik vienai problemai.

Algoritmo analizė

Algoritminė analizė – tai procesas, kurio metu vertinamas algoritmo veikimas pagal efektyvumą, sudėtingumą ir kitus kriterijus. Paprastai tai atliekama siekiant įvertinti daugelį algoritmų ir parinkti optimalų tam tikros problemos ar programinės įrangos sprendimą.

Algoritmų analizė paprastai apima jų laiko ir erdvės sudėtingumo matavimą.

Kaip ir erdvės sudėtingumo atveju, kuris apibūdina reikalingą atminties ar vietos diske kiekį, laiko sudėtingumas apibūdina, kiek laiko algoritmas nustato užduočiai atlikti.

Yra įvairių būdų, kaip analizuoti algoritmų sudėtingumą, pvz., Big O ir Omega žymėjimą. Omega simbolis nurodo viršutinę algoritmo laiko sudėtingumo ribą, o Omega simbolis – apatinę ribą.

Be laiko ir erdvės sudėtingumo matavimo, algoritmų analizė taip pat apima kitus kriterijus, tokius kaip stabilumas, lygiagretumas ir mastelio keitimas.

    Stabilumas:- Tai reiškia algoritmo gebėjimą išlaikyti santykinę duomenų rinkinio elementų tvarką.Lygiagretavimas:- Tai reiškia gebėjimą lygiagrečiai vykdyti operacijas keliuose procesoriuose.Mastelio keitimas:- Kita vertus, tai reiškia algoritmo gebėjimą apdoroti didelius duomenų kiekius ir kitus įvesties duomenis.

Jie apima dviejų tipų analizę.

jie yra:-

  1. Išankstinė analizė.
  2. Užpakalinė analizė.

Ankstesnė analizė

python programas

„Prior“ yra algoritmo analizės metodas, kurio tikslas – įvertinti algoritmo našumą, remiantis jo matematinėmis savybėmis, iš tikrųjų nevykdant algoritmo.

Šis metodas leidžia analizuoti algoritmų ir kitų metrikų laiko ir erdvės sudėtingumą, nereikia diegti ir paleisti algoritmų.

Užpakalinė analizė

Kita vertus, užpakalinė analizė yra algoritmų analizės metodas, kuris iš tikrųjų vykdo algoritmą ir matuoja jo veikimą.

Šis metodas suteikia tikslesnę ir išsamesnę informaciją apie algoritmo veikimą, tačiau reikalauja algoritmo įgyvendinimo ir vykdymo.

Algoritmo sudėtingumas

Algoritminis sudėtingumas yra matas, skirtas matuoti algoritmo efektyvumą ir našumą. Algoritmai paprastai vertinami atsižvelgiant į laiką ir erdvę, reikalingą problemai išspręsti arba konkrečiam tikslui pasiekti.

Algoritmo sudėtingumui naudojami du veiksniai.

jie yra:-

  1. Laiko faktorius.
  2. Erdvės faktorius.

Laiko faktorius

  • Laikas, kurio algoritmui reikia atlikti užduotį, vadinamas laiko sudėtingumu. Paprastai jis matuojamas operacijų arba žingsnių skaičiumi, kurį algoritmas turi atlikti, kad išspręstų problemą.
  • Algoritmo sudėtingumas laike yra svarbus, nes jis lemia, kiek laiko reikia vykdyti, ir gali turėti didelės įtakos programos ir sistemos veikimui.
  • Algoritmo sudėtingumas laike gali būti išreikštas naudojant Big O žymėjimą – būdą išreikšti viršutinę algoritmo sudėtingumo laike ribą.
  • Algoritmas, kurio laiko sudėtingumas O(n), reiškia, kad laikas, reikalingas algoritmui vykdyti, yra tiesiogiai proporcingas įvesties duomenų dydžiui (n).
  • Kiti dažni laiko sudėtingumai yra O(n^2) kvadratinis sudėtingumas ir O(log n) logaritminis sudėtingumas.

Erdvės analizė

  • Kita vertus, erdvės sudėtingumas reiškia atminties ar saugyklos vietos kiekį, reikalingą algoritmui vykdyti.
  • Tai svarbu, nes jis nustato išteklių, reikalingų algoritmams, kurie gali turėti įtakos bendram jūsų programos ar sistemos veikimui, paleisti.
  • Jei algoritmo erdvės sudėtingumas yra O(n), jis naudoja atminties kiekį, kuris auga tiesiškai didėjant įvesties dydžiui.
  • Jei algoritmas turi O(1) erdvės sudėtingumą, jis naudoja fiksuotą atminties kiekį, neatsižvelgiant į įvesties dydį.

Kaip parašyti algoritmą

1. Pirmiausia apibrėžkite problemą, kurią norite išspręsti algoritmu.

Pavyzdžiui, tarkime, kad norime parašyti algoritmą, kad iš skaičių sąrašo rastume didžiausią reikšmę.

2. Suskaidykite problemą į mažesnius, valdomus veiksmus.

  • Inicijuoti „max“ kintamąjį iki pirmosios sąrašo reikšmės.
  • Kiekvieną paskesnę sąrašo reikšmę palyginkite su „max“.
  • Jei vertė yra didesnė nei „max“, nustatykite „max“ į tą reikšmę.
  • Tęskite tai, kol bus palygintos visos sąrašo reikšmės.
  • Grąžina galutinę „max“ vertę.

3. Parašykite savo algoritmą pseudokodu arba programavimo kalba.

Algoritmas parašytas pseudo kodu:

 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. Išbandykite savo algoritmą, kad įsitikintumėte, jog jis teisingas ir efektyvus.

Algoritmą galite išbandyti įvesdami skirtingus skaičių sąrašus ir patikrindami, ar jis pateikia maksimalią teisingą reikšmę. Taip pat galite išanalizuoti savo algoritmo sudėtingumą laiku, kad nustatytumėte, kaip jis pritaikytas didesnėms įvestims.

Pavyzdys:-

skaičiuoti atskirą sql

Įvestis: [1, 5, 2, 7, 3]

Išėjimas: 7.

Paaiškinimas: 7 yra didžiausia sąrašo reikšmė.

5. Optimizuokite algoritmą.

Ieškokite būdų, kaip optimizuoti algoritmus, kad jie būtų greitesni ir efektyvesni. Tai gali apimti pseudokodo modifikavimą arba efektyvesnių duomenų struktūrų ar algoritmų įgyvendinimą.

Pagrindinis algoritmų rašymas

Pavyzdys: - dviejų sveikųjų skaičių suma.

1 žingsnis - Pradėti

2 žingsnis - Paskelbkite tris sveikuosius skaičius a, b, c

3 veiksmas - Apibrėžkite a ir b reikšmes

4 veiksmas - Sudėkite a ir b reikšmes

5 veiksmas - Išsaugokite c 4 veiksmo išvestį

6 veiksmas - Spausdinti c

7 veiksmas - Sustabdyti

C kalba naudojamų algoritmų tipas.

1. Rūšiavimo algoritmai

C pateikia gausų duomenų tipų ir operatorių rinkinį, kurį galima naudoti įgyvendinant įvairius rūšiavimo algoritmus, tokius kaip burbulų rūšiavimas, įterpimo rūšiavimas ir greitas rūšiavimas.

Šie algoritmai yra naudingi daugelyje programų, nes juos galima naudoti rūšiuojant įvairaus dydžio ir tipo duomenis.

Yra įvairių rūšiavimo algoritmų.

jie yra:-

(i) Burbulų rūšiavimas: Nesudėtingas rūšiavimo algoritmas, kuris pakartotinai lygina netoliese esančius komponentus ir išjungia juos, jei jie neveikia.

Burbulų rūšiavimo algoritmas yra toks:

  1. Pradėkite nuo nerūšiuoto elementų sąrašo.
  2. Palyginkite pirmuosius du sąrašo elementus. Jei pirmasis elementas yra didesnis už antrąjį, pakeiskite juos.
  3. Pereikite prie kitos elementų poros ir kartokite 2 veiksmą, kol pasieksite sąrašo pabaigą.
  4. Kiekvienam sąrašo elementui dar kartą pakartokite 2 ir 3 veiksmus. tai vadinama leidimais.
  5. Pakartokite 2–4 veiksmus visam sąrašui. Kai kartosite praėjimus, elementai „burbuliuos“ į tinkamą vietą surūšiuotame sąraše.
  6. Užbaigus leidimą ir neatlikus apsikeitimo, sąrašas surūšiuojamas ir algoritmas gali sustoti.
  7. Galutinis surūšiuotas sąrašas grąžinamas.

(ii) Įterpimo rūšiavimas : rūšiavimo metodas, kuris sukuria surūšiuotą sąrašą po vieną atskirą elementą, kiekvieną įdėdamas į atitinkamą vietą.

Įterpimo rūšiavimo algoritmas yra toks:

  1. Inicijuoti tuščią surūšiuotą sąrašą ir nerūšiuotą elementų, kuriuos reikia rūšiuoti, sąrašą.
  2. Pirmas narys iš nerūšiuoto sąrašo turi būti paimtas ir patalpintas į atitinkamą vietą surūšiuotame sąraše.
  3. Pakartokite 2 veiksmą kiekvienam paskesniam nerūšiuoto sąrašo elementui.
  4. Palyginkite esamą elementą su surūšiuoto sąrašo elementais, pradėdami nuo elemento iš karto kairėje.
  5. Sukeiskite du elementus, jei dabartinis elementas yra mažesnis už elementą kairėje.
  6. Jei dabartinis elementas yra didesnis nei elementas, esantis jo kairėje, įterpkite jį į tinkamą vietą surūšiuotame sąraše.
  7. Pakartokite 4–6 veiksmus kiekvienam paskesniam nerūšiuoto sąrašo elementui.
  8. Kai visi elementai bus apdoroti, surūšiuotame sąraše bus visi elementai tinkama tvarka.
  9. Rūšiavimo procesas baigtas.

(iii) atrankos rūšiavimas : rūšiavimo metodas, kuris nuosekliai pradeda surūšiuotą sąrašą su mažiausia detale iš netvarkingo sąrašo.

Pasirinkimo rūšiavimo algoritmas yra toks:

  1. Pradėkite nustatydami pirminį sąrašo elementą kaip minimalų elementą.
  2. Pakartokite per likusius sąrašo elementus, palygindami kiekvieną su esamu minimumu.
  3. Nustatykite naują minimumą, jei nustatoma, kad elementas yra mažesnis už esamą.
  4. Pakeiskite esamą minimumą į pirmąjį sąrašo elementą, kai tik jis padaro išvadą.
  5. Likusiai nerūšiuotai sąrašo daliai pakartokite 2–4 veiksmus, bet pradėkite nuo antrojo sąrašo elemento (nes pirmasis elementas jau surūšiuotas).
  6. Tęskite sąrašo rūšiavimą tokiu būdu, kol jis bus surūšiuotas.

(iv) Greitas rūšiavimas : rūšiavimo „skaldyk ir užkariauk“ algoritmas, parenkantis suvestinį elementą ir padalijantis sąrašą į posąraščius, atsižvelgiant į tai, ar elementų yra mažiau ar daugiau nei suvestinis elementas. Po to antriniai sąrašai rūšiuojami pakartotinai, kol surūšiuojamas visas sąrašas.

Greito rūšiavimo algoritmas yra toks:

  1. Iš sąrašo pasirinkite pasukimo elementą. Paprastai tai yra pirmasis elementas, tačiau jis taip pat gali būti atsitiktinis elementas arba sąrašo mediana.
  2. Padalinkite sąrašą į du posąraščius: viename yra elementų, mažesnių už suvestinę, o kitame yra elementų, didesnių už suvestinę.
  3. Rekursyviai rūšiuokite posąrašį, kuriame yra mažiau elementų nei suvesti, naudodami tą patį procesą.
  4. Naudokite tą pačią procedūrą, kad rekursyviai surūšiuotumėte didesnių nei suvestinės įrašų posąrašį.
  5. Sujunkite surūšiuotus posąraščius su sukimo elementu, kad sudarytumėte visiškai surūšiuotą sąrašą.
  6. Grąžinti visiškai surūšiuotą sąrašą.

(v) Daug eina : „Skaldyk ir užkariauk“ rūšiavimo algoritmas padalija sąrašą į dvi dalis, surūšiuoja kiekvieną pusę ir sujungia dvi dalis rūšiavimo tvarka.

Sujungimo-rūšiavimo algoritmas:

  1. Iš sąrašo sudarykite du posąraščius: vieną su elementais po suvestinės ir kitą su elementais virš suvestinės.
  2. Sukuria naują surūšiuotą posąrašį iteratyviai sujungdama posąraščius, kol bus tik vienas posąrašas. Tai bus jūsų surūšiuotas sąrašas.
  3. Dviejų pakatalogių sujungimo veiksmai:
  4. Sukurkite tuščią sąrašą, kuriame bus surūšiuoti elementai.
  5. Palygina pirmąjį kiekvieno posąrašo elementą.
  6. Prideda mažesnį elementą prie naujo sąrašo ir pašalina jį iš pirminio posąrašo.
  7. Kartokite 2 ir 3 veiksmus, kol sąrašas bus visiškai tuščias.
  8. Prideda likusius elementus iš kitų subsąrašų į naują sąrašą.
  9. Pakeičia sujungtą posąrašį nauju surūšiuotu sąrašu.
  10. Kartokite šį procesą, kol visi posąraščiai bus sujungti į vieną surūšiuotą sąrašą.

(vi) Rūšiuoti krūvą : rūšiavimo algoritmas, rūšiuojantis elementus naudodamas duomenų struktūrą, vadinamą krūva.

Tai yra klasifikavimo algoritmas:

    Sukurkite didžiausią krūvą: Pradėdami nuo pirmojo ne lapo mazgo, palyginkite kiekvieną mazgą su antriniais mazgais ir pakeiskite mazgus didžiausiu antriniu mazgu, kad atitiktumėte didžiausios krūvos savybę.Sukeisti šaknį su paskutiniu elementu: pakeiskite šaknį (didžiausią elementą) su paskutiniu elementu krūvoje.
  1. Sudėkite likusius elementus. Pradedant nuo šaknies, kiekvienas mazgas lyginamas su savo vaikais, keičiant mazgus su vyresniais vaikais, kol bus patenkinta maksimali krūvos savybė.
  2. Pakartokite 2 ir 3 veiksmus su naujai sukrautais elementais, išskyrus paskutinį elementą tinkamoje padėtyje.
  3. Kartokite šį procesą, kol krūvoje liks tik vienas elementas. Tai dabar surūšiuota.
  4. „Heapify Down“.: Pradedant nuo šakninio mazgo, jis lygina elementus su antriniais ir keičiasi su didesniu iš dviejų, kol bus patenkinta maksimali krūvos savybė.Susikaupti: pradėkite nuo paskutinio krūvos elemento, palyginkite jį su pirminiu elementu ir pakeiskite jį pirminiu, kad atitiktų didžiausios krūvos ypatybę.

(vii) Radix rūšiavimas : rūšiavimo algoritmas, rūšiuojantis elementus pagal jų dvejetainio atvaizdo skaitmenis arba skaitmenis.

Radix rūšiavimo algoritmas yra toks:

Java 8
  1. nustatyti, kiek skaitmenų yra didžiausiame įvesties sąrašo elemente.
  2. Inicijuokite kintamąjį, tarkime, skaitmenų vietą, į 1, kuris reiškia dabartinę skaitmenų vietą.
  3. Sukurkite tuščią sąrašą kiekvienai galimai skaitmens vertei nuo 0 iki 9.
  4. Pakartokite įvesties sąrašą ir pridėkite kiekvieną elementą į atitinkamą sąrašą pagal dabartinės skaitmenų vietos reikšmę.
  5. Sujunkite visus sąrašus, kad sudarytumėte naują sąrašą skaitmenų sąrašų tvarka.
  6. Padauginkite digitPlace iš 10, kad pereitumėte į kitą skaitmens vietą.
  7. Kartokite 4–6 veiksmus kiekvienai skaitmens vietai, kol atsižvelgsite į visus didžiausio elemento skaitmenis.
  8. Galutinis sąrašas bus surūšiuotas didėjimo tvarka pagal elementų skaitmenis.
  9. Grąžinti galutinį surūšiuotą sąrašą.

2. Paieškos algoritmai

C taip pat pateikia įrankius, reikalingus įvairiems paieškos algoritmams, pvz., tiesinei paieškai ir dvejetainei paieškai, įgyvendinti. Šie algoritmai gali greitai rasti konkrečius elementus duomenų rinkinyje, todėl jie gali būti naudingi įvairioms programoms.

Yra daugybė paieškos algoritmų tipų.

Jie yra:-

(i) Linijinė paieška : pagrindinis paieškos algoritmas, kuris tiria kiekvieną sąrašo elementą po vieną, kol randa norimą elementą.

Linijinės paieškos algoritmas:

  1. Apibrėžkite algoritmo įvestį: Linijinės paieškos algoritmo įvestis yra elementų sąrašas (arba masyvas) ir tikslinis elementas, kurio ieškome.
  2. Inicijuoti kintamąjį, vadinamą „index“, į -1: šis kintamasis bus naudojamas tikslinio elemento indeksui išsaugoti, jei jis bus rastas.
  3. Peržvelkite elementų sąrašą: Pradėdami nuo pirmojo elemento, patikrinkite kiekvieną sąrašo elementą po vieną.
  4. Palyginkite esamą elementą su norimu vertinimui: Dabartinio elemento indeksą palikite indekso kintamajame ir išeikite iš ciklo, jei modernus elementas ir tikslo elementas yra identiški.
  5. Grąžinti tikslinio elemento indeksą: Kai ciklas bus baigtas, grąžinkite vertę, saugomą indekso kintamajame. Jei tikslinis elementas nerastas, indekso reikšmė bus -1.

(ii) dvejetainė paieška : labiau tikėtina, kad paieškos algoritmas, kuris padalija sąrašą į dalis ir ieškos tose pusėse, apims elementą.

Dvejetainės paieškos algoritmas:

  1. Įvestis: surūšiuotas n elementų sąrašas ir tikslinis elementas x.
  2. Inicijuoti kintamuosius: žemą indeksą nustatykite į 0, aukštą indeksą į n-1, o vidutinį į (žemas+aukštas)/2.
  3. Pradėkite kilpą: kol žemas indeksas yra mažesnis arba lygus aukštam indeksui, pakartokite šiuos veiksmus.
  4. Palyginkite vidurinį elementą su x: jei vidurinis elementas yra lygus x, grąžinkite vidurio indeksą.
  5. Atnaujinkite žemą arba aukštą indeksą: jei x yra didesnis už vidutinį elementą, nustatykite žemą indeksą į vidutinį + 1. Kitu atveju nustatykite aukštą indeksą į vidutinį – 1.
  6. Atnaujinkite vidutinį indeksą: Vidutinis = (žemas+aukštas)/2.
  7. Ciklo pabaiga: jei žemas indeksas yra didesnis už aukštą, vadinasi, x nėra sąraše, o algoritmas grąžina gedimą.
  8. Išvestis: x indeksas sąraše arba gedimo pranešime.

iii) paieška pagal gylį : paieškos algoritmas, kuris kiek įmanoma ištiria kiekvieną šaką prieš apsisukdamas.

Šios gairės taikomos atliekant giluminę paiešką:

  1. pasirinkite pradinę grafiko viršūnę arba mazgą, nuo kurio norite pradėti.
  2. Pridėkite apsilankymo ženklą prie pirmosios viršūnės.
  3. Tiesiogiai įdėkite pradinę viršūnę į krūvą.
  4. Kol krūva bus tuščia, kartokite šiuos veiksmus: -
    • Pašalinkite rietuvės viršutinę viršūnę.
    • Pažymėkite kaip aplankytą ir įdėkite į krūvą kiekvieną nelankytą iššokusios viršūnės kaimyną.
  5. Tęskite šį procesą, kol aplankysite visas grafiko viršūnes.
  6. Kai visos viršūnės yra aplankytos, algoritmas baigiamas ir grafe atliekama pirmoji gylio paieška.

iv) paieška pagal plotį : paieškos algoritmas, kuris ištiria visus mazgo kaimynus prieš pereinant į kitą lygį.

Paieškos pagal plotį algoritmas yra toks:

  1. Pradėkite nuo šakninio mazgo arba pradinės būsenos.
  2. Įtraukite šakninį mazgą į eilę.
  3. Patikrinkite, ar eilė tuščia; jei taip, nutraukite algoritmą.
  4. Paimkite pirmąjį elementą iš eilės ir pažymėkite jį kaip aplankytą.
  5. Padidinkite šiuolaikinį mazgą įtraukdami į eilę visus jo nelankytus kaimynus.
  6. Kol bus rastas norimas mazgas arba eilė bus tuščia, kartokite 3–5 veiksmus.
  7. Grąžinkite kelią iš pradinės būsenos į tikslinę būseną, jei tikslo mazgas rastas.
  8. Nutraukite taisyklių rinkinį ir praneškite, kad tikslo būsena nebuvo nustatyta, jei eilė tuščia.

v) Interpoliacijos paieška : paieškos algoritmas, kuris naudoja ieškomų elementų reikšmes, kad įvertintų poziciją indekse.

kortele java

Svarbu, kad masyvas būtų tolygiai paskirstytas. Priešingu atveju tai yra algoritmas.

Veikia taip, kaip tikėtasi.

Algoritmą galima apibendrinti taip.

  1. Norėdami ieškoti, gaukite įvesties sąrašą ir rakto reikšmę.
  2. Pirmajame ir paskutiniame sąrašo indeksuose inicijuokite apatinį ir viršutinį kintamuosius.
  3. Jei apatinė vertė yra mažesnė arba lygi didesnei vertei, tada:-
    1. Apskaičiuokite numatomą vietą pagal šią formulę:
      poz = žemas + ((aukštas - žemas) / (arr[aukštas] - rodyklė[žemas])) * (x - arr[žemas]).
    2. Grąžinkite poziciją, jei apskaičiuota padėties reikšmė yra pagrindinė reikšmė.
    3. c) Jei apskaičiuota padėties reikšmė mažesnė už rakto reikšmę, nustatykite ją mažesnę.
      Padėtis + 1.
    4. d) Jei numatomos padėties reikšmė yra didesnė už rakto Nustatyti reikšmę, padėtis - 1 aukštyn.
  4. Jei rakto reikšmė nerasta, grąžinkite -1, kad nurodytumėte, jog reikšmės sąraše nėra.

(vi) Peršokimo paieška : paieškos metodas, kartojantis sąrašą pastovaus ilgio žingsniais, kol randa atitinkamą elementą arba nustato, kad jo nebėra.

Šuolio paieškos algoritmas yra toks:

  1. Pirmiausia nustatykite šuolio dydį į kvadratinę šaknį iš masyvo elementų skaičiaus.
  2. Nustato kintamąjį pavadinimu „current“ į pirmąjį masyvo elementą.
  3. Kartojama per masyvą, šokinėjant pagal šuolio dydį, tuo pačiu didinant kintamąjį, vadinamą „šuoliu“.
  4. Jei esamas elementas yra mažesnis už norimą elementą, pereikite prie kito šuolio.
  5. Jei dabartinis elementas yra didesnis nei tikslinis elementas, atlikite tiesinę paiešką tarp dabartinio elemento ir ankstesnio šuolio elemento, kad rastumėte tikslinį elementą.
  6. Jei tikslinio elemento masyve nerasta, jis grąžina -1, nurodydamas, kad jo nėra masyve.
  7. Jei elementas randamas, jis grąžina elemento indeksą masyve.

3. Grafiniai algoritmai

C palaikymas rodyklėms ir duomenų struktūroms, pvz., masyvams ir susietiems sąrašams, leidžia įgyvendinti algoritmus, kurie manipuliuoja grafikais, pvz., ieškant trumpiausio kelio tarp dviejų grafiko mazgų.

Yra įvairių tipų grafų algoritmai.

jie yra:-

    Dijkstros algoritmas: algoritmas, kuris randa trumpiausią kelią tarp dviejų grafiko mazgų nuolat atnaujindamas trumpiausią atstumą nuo kiekvieno mazgo.Algoritmas A*: metodas, kuris nuolat atnaujina trumpiausią kursą iki kiekvieno grafiko mazgo, kad nustatytų trumpiausią maršrutą tarp jų.Primo algoritmas: svertinio sujungto grafiko mažiausio apimančio medžio nustatymo metodas.Kruskal algoritmas: metodas, leidžiantis nustatyti susieto svertinio grafiko žemiausią apimantį medį.Bellman-Ford algoritmas: Algoritmas, kuris net tada, kai diagrama turi neigiamą kraštų svorį, rodo trumpiausią kelią tarp konkretaus tiekimo mazgo ir kiekvieno kito tinklo mazgo.

4. Kriptografiniai algoritmai

C palaiko žemo lygio operacijas ir efektyvų duomenų apdorojimą, todėl idealiai tinka kriptografijoje naudojamiems algoritmams, pvz., duomenų šifravimo ir iššifravimo algoritmams, įgyvendinti.

Yra įvairių tipų šifravimo algoritmai.

Jie yra:-

    Maišos algoritmai: Šie algoritmai sukuria fiksuoto dydžio išvestis (maišos) iš savavališko dydžio įvesties. Pavyzdžiui, MD5, SHA-1 ir SHA-2.Simetrinių raktų algoritmai: Tokių algoritmų šifravimo ir iššifravimo etapai naudoja tą patį privatųjį raktą. AES, DES ir Blowfish yra keli pavyzdžiai.Asimetriniai raktų algoritmai: viešasis raktas ir neviešasis raktas šiais metodais naudojami kaip atskiri šifravimo ir iššifravimo raktai. Kai kurie pavyzdžiai yra RSA, ECC ir DSA.Raktų keitimo algoritmai: Šie algoritmai leidžia dviem šalims saugiai keistis raktais nesaugiu kanalu. Pavyzdžiui, galime paminėti Diffie-Hellman ir Elipsinę kreivę Diffie-Hellman.

Algoritmo privalumai

Algoritmai turi daug privalumų.

jie yra:-

    Greitis ir efektyvumas: Algoritmai gali greitai ir tiksliai apdoroti didelius duomenų kiekius, todėl jie yra naudingi atliekant užduotis, kurios per daug atima daug laiko arba yra linkusios į klaidas.Nuoseklumas: Algoritmai vadovaujasi iš anksto nustatytų gairių rinkiniu. Jis gali duoti nuoseklių rezultatų, nebūdamas paveiktas asmeninių tendencijų ir emocijų.Automatika: Algoritmai gali atlikti užduotis automatiškai, todėl žmonės gali sutelkti dėmesį į sudėtingesnes ar kūrybiškesnes užduotis.Padidėjęs tikslumas: Algoritmai dažnai gali pasiekti aukštesnį tikslumo lygį nei žmonės, ypač kai dirbama su dideliais duomenų kiekiais.Geresnis sprendimų priėmimas: algoritmai padeda mums priimti labiau pagrįstus ir objektyvius sprendimus analizuojant duomenis ir nustatant modelius bei tendencijas, kurios nėra lengvai matomos žmonėms.Mastelio keitimas: Algoritmus galima lengvai padidinti arba sumažinti, kad atitiktų kintančius poreikius ir darbo krūvius.

Algoritmo trūkumai

Algoritmai yra labai naudingi programuojant, tačiau algoritmai turi trūkumų.

jie yra:-

    Ribota apimtis: Algoritmai gali išspręsti problemas tik jų taikymo sferoje ir gali nesugebėti išspręsti sudėtingų ar abstrakčių problemų.Šališkumas: Algoritmai gali išlaikyti ir sustiprinti treniruotėms naudojamų duomenų šališkumą, todėl gaunami nesąžiningi rezultatai.Nepakankamas skaidrumas: Daugelis algoritmų slepia procesą, per kurį jie daro išvadas. Dėl to gali būti sunku galvoti apie rezultatus arba juos patikrinti.Pasikliauti duomenų tikslumu:Taisyklių rinkinio teisingumas labai priklauso nuo instrukcijoje naudojamų duomenų tikslumo ir pritaikomumo. Netikslus arba netikslus poveikis gali būti klaidingų duomenų rezultatas.suvaržytas prisitaikymas:Algoritmai sukurti taip, kad atitiktų gaires ir nepritaikytų prie besikeičiančių aplinkybių ir sąlygų.