logo

Algoritms C valodā

Algoritms ir instrukciju secība, kas tiek izpildīta iepriekš noteiktā secībā, lai atrisinātu problēmu vai pabeigtu darbu. Funkcija ir koda bloks, ko var izsaukt un izpildīt no citām programmas daļām.

Instrukciju kopums problēmas risināšanai vai noteiktas darbības veikšanai. Datorzinātnēs algoritmus izmanto visdažādākajām operācijām, sākot no fundamentālas matemātikas līdz sarežģītai datu apstrādei.

Viens no izplatītākajiem algoritmiem, ko izmanto C, ir šķirošanas algoritms. Kārtošanas algoritms sakārto vienumu kolekciju noteiktā secībā, piemēram, skaitliski vai alfabētiski.

Ir daudz šķirošanas algoritmu, katram ir priekšrocības un trūkumi. Visizplatītākie C šķirošanas algoritmi ir ātrā kārtošana, sapludināšana un kārtošana.

Viena no galvenajām C iezīmēm ir rādītāja atbalsts. Tas ļauj efektīvi manipulēt ar datu struktūrām, piemēram, masīviem, rindām utt. Tas padara to piemērotu tādu algoritmu ieviešanai, kuriem nepieciešama sarežģīta datu manipulācija, piemēram, šķirošana un algoritmiskā meklēšana.

Viens no slavenākajiem C valodā ieviestās programmatūras bibliotēkas piemēriem ir standarta veidņu bibliotēka (STL). Šī bibliotēka nodrošina plašu algoritmu klāstu tādiem uzdevumiem kā datu kārtošana, meklēšana un manipulācijas ar datu struktūrām.

Algoritma iezīmes

Tas nosaka vairākas svarīgas algoritma iezīmes, tostarp:

java baitu masīvs uz virkni
    Ievades: Algoritmiem ir jāsaņem ievade, ko var attēlot kā vērtības vai datus.Izvade: Algoritmam vajadzētu radīt zināmu rezultātu. Tās var būt problēmas sekas vai tās risināšanai izstrādāts risinājums.Skaidrība: Algoritmiem jābūt precīzi definētiem, izmantojot nepārprotamas instrukcijas, kuras dators vai cita sistēma var nepārprotami ievērot.Galīgums: algoritmam ir nepieciešamas ierobežotas darbības. Tas nozīmē, ka tas ir jāiziet pēc noteikta komandu skaita izpildes.Derīgums: algoritmam ir jābūt derīgam. Citiem vārdiem sakot, tam jāspēj radīt problēmas risinājumu, kuru algoritms ir paredzēts atrisināt saprātīgā laika periodā.Efektivitāte:Algoritmam ir jābūt efektīvam, kas nozīmē, ka tam ir jāspēj saprātīgā laika posmā radīt problēmas risinājumu, kuru tas ir paredzēts atrisināt.Vispārīgi:Algoritmam ir jābūt vispārīgam, kas nozīmē, ka to var piemērot plašam problēmu lokam, nevis būt specifiskam vienai problēmai.

Algoritmu analīze

Algoritmiskā analīze ir algoritma veiktspējas novērtēšanas process, ņemot vērā efektivitāti, sarežģītību un citus kritērijus. Parasti tas tiek darīts, lai novērtētu daudzus algoritmus un izvēlētos optimālo risinājumu noteiktai problēmai vai programmatūrai.

Algoritmu analīze parasti ietver to laika un telpas sarežģītības mērīšanu.

Tāpat kā ar vietas sarežģītību, kas raksturo vajadzīgās atmiņas vai diska vietas apjomu, laika sarežģītība apraksta, cik ilgi algoritms nosaka uzdevuma izpildi.

Ir dažādi veidi, kā analizēt algoritmu laika sarežģītību, piemēram, Big O un Omega apzīmējumi. Omega simbols nodrošina algoritma laika sarežģītības augšējo robežu, savukārt Omega simbols nodrošina apakšējo robežu.

Papildus laika un telpas sarežģītības mērīšanai algoritmu analīze ietver arī citus kritērijus, piemēram, stabilitāti, paralēlismu un mērogojamību.

    Stabilitāte:- Tas attiecas uz algoritma spēju saglabāt elementu relatīvo secību datu kopā.Paralēlizācija:- Tas attiecas uz spēju veikt darbības paralēli vairākos procesoros.Mērogojamība:- No otras puses, tas attiecas uz algoritma spēju apstrādāt lielus datu apjomus un citus ievades datus.

Tie ietver divu veidu analīzi.

viņi ir:-

  1. Iepriekšēja analīze.
  2. Aizmugurējā analīze.

Iepriekšēja analīze

Prior ir algoritma analīzes metode, kas koncentrējas uz algoritma veiktspējas novērtēšanu, pamatojoties uz tā matemātiskajām īpašībām, faktiski neizpildot algoritmu.

Šī pieeja ļauj analizēt algoritmu un citu metrikas laika un telpas sarežģītību bez nepieciešamības ieviest un palaist algoritmus.

Aizmugurējā analīze

No otras puses, aizmugurējā analīze ir algoritma analīzes metode, kas faktiski izpilda algoritmu un mēra tā veiktspēju.

Šī pieeja sniedz precīzāku un detalizētāku informāciju par algoritma veiktspēju, taču tai ir nepieciešama algoritma ieviešana un izpilde.

Algoritma sarežģītība

Algoritmiskā sarežģītība ir algoritma efektivitātes un veiktspējas mērījums. Algoritmus parasti novērtē, ņemot vērā laiku un telpu, kas nepieciešams problēmas risināšanai vai noteikta mērķa sasniegšanai.

Algoritma sarežģītībā tiek izmantoti divi faktori.

viņi ir:-

  1. Laika faktors.
  2. Kosmosa faktors.

Laika faktors

  • Laiks, kas algoritmam nepieciešams uzdevuma veikšanai, tiek saukts par laika sarežģītību. To parasti mēra pēc operāciju vai darbību skaita, kas algoritmam jāveic, lai atrisinātu problēmu.
  • Algoritma laika sarežģītība ir svarīga, jo tā nosaka, cik ilgs laiks nepieciešams, lai to izpildītu, un tas var būtiski ietekmēt programmas un sistēmas veiktspēju.
  • Algoritma laika sarežģītību var izteikt, izmantojot Big O apzīmējumu, veidu, kā izteikt algoritma laika sarežģītības augšējo robežu.
  • Algoritms ar laika sarežģītību O(n) nozīmē, ka algoritma izpildei nepieciešamais laiks ir tieši proporcionāls ievades datu lielumam (n).
  • Citas izplatītas laika sarežģītības ir O(n^2) kvadrātiskā sarežģītība un O(log n) logaritmiskā sarežģītība.

Kosmosa analīze

  • No otras puses, telpas sarežģītība attiecas uz atmiņas vai krātuves apjomu, kas nepieciešams algoritma izpildei.
  • Tas ir svarīgi, jo tas nosaka nepieciešamo resursu skaitu, lai palaistu algoritmus, kas var ietekmēt jūsu lietojumprogrammas vai sistēmas vispārējo veiktspēju.
  • Ja algoritma telpas sarežģītība ir O(n), tas izmanto atmiņas apjomu, kas lineāri pieaug līdz ar ievades lielumu.
  • Ja algoritmam ir O(1) telpas sarežģītība, tas izmanto fiksētu atmiņas apjomu neatkarīgi no ievades lieluma.

Kā uzrakstīt algoritmu

1. Vispirms definējiet problēmu, kuru vēlaties atrisināt ar algoritmu.

Piemēram, pieņemsim, ka mēs vēlamies uzrakstīt algoritmu, lai atrastu maksimālo vērtību no skaitļu saraksta.

2. Sadaliet problēmu mazākās, pārvaldāmās darbībās.

  • Inicializējiet mainīgo “max” līdz pirmajai vērtībai sarakstā.
  • Katrai nākamajai vērtībai sarakstā salīdziniet ar 'max'.
  • Ja vērtība ir lielāka par “max”, iestatiet “max” uz šo vērtību.
  • Turpiniet to darīt, līdz ir salīdzinātas visas sarakstā esošās vērtības.
  • Atgriež galīgo “maksimālo” vērtību.

3. Uzrakstiet savu algoritmu pseidokodā vai programmēšanas valodā.

Algoritms, kas rakstīts pseido kodā:

 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. Pārbaudiet savu algoritmu, lai pārliecinātos, ka tas ir pareizs un efektīvs.

Algoritmu var pārbaudīt, ievadot dažādus skaitļu sarakstus un pārbaudot, vai tas atgriež maksimālo pareizo vērtību. Varat arī analizēt sava algoritma laika sarežģītību, lai noteiktu, cik labi tas tiek mērogots lielākai ievadei.

Piemērs:-

Ievade: [1, 5, 2, 7, 3]

Izvade: 7.

Paskaidrojums: 7 ir maksimālā vērtība sarakstā.

5. Optimizējiet algoritmu.

Meklējiet veidus, kā optimizēt algoritmus, lai padarītu tos ātrākus un efektīvākus. Tas var ietvert pseidokoda modificēšanu vai efektīvāku datu struktūru vai algoritmu ieviešanu.

Algoritmu rakstīšanas pamatprincipi

Piemērs: - divu veselu skaitļu summa.

1. darbība - Sāc

2. darbība - Deklarē trīs veselus skaitļus a, b, c

3. darbība - Definējiet a un b vērtības

4. darbība - Pievienojiet a un b vērtības

5. darbība - Saglabājiet 4. darbības izvadi sadaļā c

6. darbība - Drukāt c

7. darbība - Beidz

C valodā izmantoto algoritmu veids.

1. Šķirošanas algoritmi

C nodrošina bagātīgu datu tipu un operatoru kopu, ko var izmantot dažādu šķirošanas algoritmu ieviešanai, piemēram, burbuļu kārtošanai, ievietošanas kārtošanai un ātrai kārtošanai.

Šie algoritmi ir noderīgi daudzās lietojumprogrammās, jo tos var izmantot dažāda lieluma un veida datu kārtošanai.

Ir dažādi šķirošanas algoritmi.

viņi ir:-

(i) Burbuļu kārtošana: Vienkāršs šķirošanas algoritms, kas atkārtoti salīdzina tuvumā esošās sastāvdaļas un izslēdz tos, ja tie nav kārtībā.

Burbuļu kārtošanas algoritms ir šāds:

  1. Sāciet ar nešķirotu elementu sarakstu.
  2. Salīdziniet pirmos divus elementus sarakstā. Ja pirmais elements ir lielāks par otro elementu, nomainiet tos.
  3. Pārejiet uz nākamo elementu pāri un atkārtojiet 2. darbību, līdz ir sasniegts saraksta beigas.
  4. Katram saraksta vienumam atkārtojiet 2. un 3. darbību vēlreiz. kas tiek saukta par caurlaidēm.
  5. Atkārtojiet 2.-4. darbību visam sarakstam. Atkārtojot gājienus, elementi “burbuļos” līdz pareizajai pozīcijai sakārtotajā sarakstā.
  6. Kad caurlaide ir pabeigta un mijmaiņas darījumi netiek veikti, saraksts tiek sakārtots, un algoritms var apstāties.
  7. Tiek atgriezts galīgais sakārtotais saraksts.

(ii) ievietošanas kārtošana : kārtošanas metode, kas izveido sakārtotu sarakstu pa vienam atsevišķam elementam, katru ievietojot attiecīgajā vietā.

Ievietošanas kārtošanas algoritms ir šāds:

  1. Inicializējiet tukšu kārtoto sarakstu un nešķirotu kārtojamo elementu sarakstu.
  2. Pirmais dalībnieks no nešķirotā saraksta ir jāņem un jāievieto atbilstošā pozīcijā sakārtotajā sarakstā.
  3. Atkārtojiet 2. darbību katram nākamajam nešķirotā saraksta elementam.
  4. Salīdziniet pašreizējo elementu ar elementiem sakārtotajā sarakstā, sākot ar elementu tieši pa kreisi.
  5. Apmainiet divus elementus, ja pašreizējais elements ir mazāks par elementu pa kreisi.
  6. Ja pašreizējais elements ir lielāks par elementu pa kreisi, ievietojiet to pareizajā vietā sakārtotajā sarakstā.
  7. Atkārtojiet 4.–6. darbību katram nākamajam nešķirotā saraksta elementam.
  8. Kad visi elementi ir apstrādāti, sakārtotajā sarakstā būs visi elementi pareizā secībā.
  9. Šķirošanas process ir pabeigts.

(iii) Atlases kārtošana : kārtošanas metode, kas konsekventi sāk sakārtoto sarakstu ar mazāko detaļu no nesakārtotā saraksta.

Atlases kārtošanas algoritms ir šāds:

  1. Sāciet, iestatot primāro saraksta elementu kā minimālo elementu.
  2. Atkārtojiet pārējos saraksta vienumus, salīdzinot katru ar pašreizējo minimumu.
  3. Iestatiet jaunu minimumu, ja tiek konstatēts, ka elements ir mazāks par esošo.
  4. Mainiet pašreizējo minimumu uz pirmo saraksta elementu ikreiz, kad tas ir noslēdzies.
  5. Atlikušajai nešķirotajai saraksta daļai atkārtojiet 2.–4. darbību, bet sāciet ar otro saraksta vienumu (jo pirmais elements jau ir sakārtots).
  6. Turpiniet kārtot sarakstu šādā veidā, līdz tas viss ir sakārtots.

(iv) Ātrā šķirošana : šķirošanas algoritms sadali un pārvaldi, kas izvēlas rakurstacijas elementu un sadala sarakstu apakšsarakstos atkarībā no tā, vai elementu skaits ir mazāks vai vairāk nekā rakurs. Pēc tam apakšsaraksti tiek kārtoti atkārtoti, līdz tiek sakārtots pilns saraksts.

Ātrās kārtošanas algoritms ir šāds:

  1. Sarakstā izvēlieties pagrieziena elementu. Parasti tas ir pirmais elements, taču tas var būt arī nejaušs elements vai saraksta mediāna.
  2. Sadaliet sarakstu divos apakšsarakstos: viens satur elementus, kas ir mazāki par rakurpunktu, un viens satur elementus, kas ir lielāki par rakurpunktu.
  3. Rekursīvi kārtojiet apakšsarakstu, kurā ir mazāki elementi nekā rakurs, izmantojot to pašu procesu.
  4. Izmantojiet to pašu procedūru, lai rekursīvi kārtotu to ierakstu apakšsarakstu, kas ir lielāki par rakurpunktu.
  5. Savienojiet sakārtotos apakšsarakstus ar šarnīra elementu starp tiem, lai izveidotu pilnībā sakārtotu sarakstu.
  6. Atgriezt pilnībā sakārtoto sarakstu.

(v) Lote iet : sadalīšanas un iekarošanas kārtošanas algoritms sadala sarakstu divās daļās, sakārto katru pusi un pēc tam apvieno abas daļas sakārtotā secībā.

Sapludināšanas kārtošanas algoritms:

uzlabota cilpai java
  1. No saraksta izveidojiet divus apakšsarakstus: vienu ar elementiem zem rakursa un otru ar elementiem virs rakursa.
  2. Izveido jaunu sakārtotu apakšsarakstu, iteratīvi sapludinot apakšsarakstus, līdz ir tikai viens apakšsaraksts. Šis būs jūsu sakārtotais saraksts.
  3. Darbības, lai apvienotu divus apakšdirektorijus:
  4. Izveidojiet tukšu sarakstu, lai saglabātu sakārtotos elementus.
  5. Salīdzina katra apakšsaraksta pirmo elementu.
  6. Jaunajam sarakstam pievieno mazāko elementu un noņem to no vecāksaraksta.
  7. Atkārtojiet 2. un 3. darbību, līdz saraksts ir pilnībā tukšs.
  8. Pievieno atlikušos elementus no citiem apakšsarakstiem jaunam sarakstam.
  9. Aizstāj sapludināto apakšsarakstu ar jauno sakārtoto sarakstu.
  10. Atkārtojiet šo procesu, līdz visi apakšsaraksti ir apvienoti vienā sakārtotā sarakstā.

(vi) Kaudzes kārtošana : šķirošanas algoritms, kas kārto elementus, izmantojot datu struktūru, ko sauc par kaudzi.

Šis ir klasifikācijas algoritms:

    Izveidojiet maksimālo kaudzi: sākot ar pirmo mezglu, kas nav lapu, salīdziniet katru mezglu ar tā pakārtotajiem mezgliem un nomainiet mezglus ar lielāko no tā atvasinātajiem mezgliem, lai nodrošinātu maksimālo kaudzes īpašību.Mainiet sakni ar pēdējo elementu: samainiet sakni (lielāko elementu) ar pēdējo steka elementu.
  1. Salieciet pārējos elementus. Sākot no saknes, katrs mezgls tiek salīdzināts ar saviem bērniem, mainot mezglus ar vecākiem bērniem, līdz tiek apmierināts maksimālais kaudzes rekvizīts.
  2. Atkārtojiet 2. un 3. darbību ar tikko sakrautajiem elementiem, izņemot pēdējo elementu pareizajā pozīcijā.
  3. Atkārtojiet šo procesu, līdz kaudzē paliek tikai viens elements. Tagad tas ir sakārtots.
  4. Pildīt uz leju: sākot no saknes mezgla, tas salīdzina elementus ar saviem bērniem un apmainās ar lielāko no diviem, līdz tiek izpildīts maksimālais kaudzes rekvizīts.Heapify Up: sāciet ar pēdējo kaudzes elementu, salīdziniet to ar vecākelementu un nomainiet to ar vecākelementu, lai apmierinātu maksimālo kaudzes rekvizītu.

(vii) Radix šķirošana : šķirošanas algoritms, kas kārto elementus, pamatojoties uz to binārā attēlojuma cipariem vai cipariem.

Radix kārtošanas algoritms ir šāds:

  1. noteikt, cik ciparu ir iekļauts ievades saraksta lielākajā elementā.
  2. Inicializējiet mainīgo, piemēram, cipara vietu, uz 1, kas apzīmē pašreizējo cipara vietu.
  3. Katrai iespējamai cipara vērtībai no 0 līdz 9 izveidojiet tukšu sarakstu.
  4. Atkārtojiet ievades sarakstu un pievienojiet katru elementu atbilstošajam sarakstam, pamatojoties uz pašreizējās cipara vietas vērtību.
  5. Savienojiet visus sarakstus kopā, lai izveidotu jaunu sarakstu ciparu sarakstu secībā.
  6. Reiziniet digitPlace ar 10, lai pārietu uz nākamo cipara vietu.
  7. Atkārtojiet 4.–6. darbību katrai cipara vietai, līdz ir ņemti vērā visi cipari lielākajā elementā.
  8. Galīgais saraksts tiks sakārtots augošā secībā pēc elementu cipariem.
  9. Atgriezt galīgo sakārtoto sarakstu.

2. Meklēšanas algoritmi

C nodrošina arī rīkus, kas nepieciešami, lai ieviestu dažādus meklēšanas algoritmus, piemēram, lineāro meklēšanu un bināro meklēšanu. Šie algoritmi var ātri atrast konkrētus vienumus datu kopā, padarot tos noderīgus plašam lietojumu klāstam.

Ir daudz veidu meklēšanas algoritmi.

Viņi ir:-

(i) Lineārā meklēšana : pamata meklēšanas algoritms, kas pārbauda katru saraksta vienumu pa vienam, līdz atrod vajadzīgo vienumu.

Lineārās meklēšanas algoritms:

  1. Definējiet algoritma ievadi: Lineārās meklēšanas algoritma ievade ir elementu saraksts (vai masīvs) un mērķa elements, kuru mēs meklējam.
  2. Inicializējiet mainīgo ar nosaukumu 'index' uz -1: šis mainīgais tiks izmantots, lai saglabātu mērķa elementa indeksu, ja tas tiks atrasts.
  3. Pārlūkojiet elementu sarakstu: sākot no pirmā elementa, pārbaudiet katru elementu sarakstā pa vienam.
  4. Salīdziniet pašreizējo elementu ar vēlamo elementu novērtēšanai: saglabājiet pašreizējā elementa indeksu indeksa mainīgajā un izejiet no cilpas, ja mūsdienu elements un mērķa elements ir identiski.
  5. Atgriezt mērķa elementa indeksu: pēc cilpas pabeigšanas atgrieziet indeksa mainīgajā saglabāto vērtību. Ja mērķa elements netiek atrasts, indeksa vērtība būs -1.

(ii) Binārā meklēšana : Meklēšanas algoritms, kas darbojas, sadalot sarakstu uz pusēm un meklē šajās daļās, visticamāk, ietvers šo elementu.

Binārās meklēšanas algoritms:

  1. Ievade: sakārtots n elementu saraksts un mērķa elements x.
  2. Mainīgo inicializēšana: iestatiet zemo indeksu uz 0, augsto indeksu uz n-1 un vidējo uz (zems+augsts)/2.
  3. Sāciet cilpu: kamēr zemais indekss ir mazāks vai vienāds ar augsto indeksu, atkārtojiet tālāk norādītās darbības.
  4. Salīdziniet vidējo elementu ar x: ja vidējais elements ir vienāds ar x, atgrieziet vidējo indeksu.
  5. Atjauniniet zemo vai augsto indeksu: ja x ir lielāks par vidējo elementu, iestatiet zemo indeksu uz vidu + 1. Pretējā gadījumā iestatiet augsto indeksu uz vidu - 1.
  6. Atjauniniet vidējo rādītāju: vidējais = (zems+augsts)/2.
  7. Cikla beigas: ja zemais indekss ir lielāks par augsto indeksu, x nav sarakstā, un algoritms atgriež kļūmi.
  8. Izvade: x indekss sarakstā vai kļūmes ziņojumā.

(iii) Meklēšana pēc dziļuma : meklēšanas algoritms, kas pirms apgriešanās pārbauda katru atzaru, cik vien iespējams.

Šādas vadlīnijas attiecas uz meklēšanu pēc dziļuma:

  1. atlasiet grafika sākuma virsotni vai mezglu, ar kuru sākt.
  2. Pievienojiet apmeklējuma atzīmi pirmajai virsotnei.
  3. Tieši ievietojiet sākuma virsotni kaudzē.
  4. Līdz kaudze ir tukša, atkārtojiet šādas darbības: -
    • Noņemiet kaudzes augšējo virsotni.
    • Atzīmējiet kā apmeklētu un ievietojiet kaudzē katru neapmeklēto virsotnes kaimiņu.
  5. Turpiniet šo procesu, līdz ir apmeklētas visas grafa virsotnes.
  6. Kad visas virsotnes ir apmeklētas, algoritms ir pabeigts, un grafikā tiek veikta pirmā dziļuma meklēšana.

(iv) Meklēšana pēc platuma : meklēšanas algoritms, kas pirms pārejas uz nākamo līmeni izpēta visus mezgla kaimiņus.

Pirmās platuma meklēšanas algoritms ir:

  1. Sāciet ar saknes mezglu vai sākotnējo stāvokli.
  2. Pievienojiet saknes mezglu rindai.
  3. Pārbaudiet, vai rinda ir tukša; ja jā, tad pārtrauciet algoritmu.
  4. Paņemiet pirmo elementu no rindas un atzīmējiet to kā apmeklētu.
  5. Pastipriniet mūsdienu mezglu, pievienojot rindai visus tā neapmeklētos kaimiņus.
  6. Kamēr vēlamais mezgls nav atrasts vai rinda ir tukša, atkārtojiet 3. līdz 5. darbību.
  7. Ja mērķa mezgls ir atrasts, atgrieziet ceļu no sākotnējā stāvokļa uz mērķa stāvokli.
  8. Pārtrauciet noteikumu kopu un ziņojiet, ka mērķa stāvoklis nav identificēts, ja rinda ir tukša.

(v) Interpolācijas meklēšana : meklēšanas algoritms, kas izmanto meklēto elementu vērtības, lai novērtētu pozīciju indeksā.

Ir svarīgi, lai masīvs būtu vienmērīgi sadalīts. Pretējā gadījumā tas ir algoritms.

Tas darbojas, kā paredzēts.

Algoritmu var apkopot šādi.

  1. Iegūstiet ievades sarakstu un atslēgas vērtību, lai meklētu.
  2. Inicializējiet apakšējo un augšējo mainīgo saraksta pirmajā un pēdējā rādītājā.
  3. Ja zemākā vērtība ir mazāka vai vienāda ar augstāku vērtību, tad:-
    1. Aprēķiniet aptuveno atrašanās vietu, izmantojot šādu formulu:
      poz = zems + ((augsts - zems) / (arr[high] - arr[zems])) * (x - arr[zems]).
    2. Atgrieziet pozīciju, ja aptuvenā pozīcijas vērtība ir galvenā vērtība.
    3. c) Ja aptuvenā pozīcijas vērtība ir mazāka par atslēgas vērtību, iestatiet to zemāku.
      Pozīcija + 1.
    4. d) Ja aprēķinātās pozīcijas vērtība ir lielāka par atslēgas Iestatīšanas vērtību, pozīcija - 1 uz augšu.
  4. Ja atslēgas vērtība nav atrasta, atgrieziet -1, lai norādītu, ka vērtība nav sarakstā.

(vi) Pārlēkta meklēšana : meklēšanas metode, kas atkārto sarakstu ar nemainīga garuma soļiem, līdz atrod attiecīgo elementu vai nosaka, ka tā vairs nav.

Lēciena meklēšanas algoritms ir šāds:

  1. Vispirms iestatiet lēciena lielumu uz kvadrātsakni no masīva elementu skaita.
  2. Iestata mainīgo ar nosaukumu 'current' uz pirmo masīva elementu.
  3. Atkārtojas pāri masīvam, pārlecot pēc lēciena lieluma, vienlaikus palielinot mainīgo, ko sauc par “lēcienu”.
  4. Pārejiet uz nākamo lēcienu, ja esošais elements ir mazāks par vēlamo elementu.
  5. Ja pašreizējais elements ir lielāks par mērķa elementu, veiciet lineāru meklēšanu starp pašreizējo un iepriekšējo lēciena elementu, lai atrastu mērķa elementu.
  6. Ja mērķa elements masīvā nav atrasts, tas atgriež -1, lai norādītu, ka tas nav masīvā.
  7. Ja elements tiek atrasts, tas atgriež elementa indeksu masīvā.

3. Grafu algoritmi

C atbalsts rādītājiem un datu struktūrām, piemēram, masīviem un saistītiem sarakstiem, padara to piemērotu tādu algoritmu ieviešanai, kas manipulē ar grafikiem, piemēram, lai atrastu īsāko ceļu starp diviem diagrammas mezgliem.

Ir dažādi grafiku algoritmu veidi.

viņi ir:-

    Dijkstras algoritms: algoritms, kas atrod īsāko ceļu starp diviem mezgliem grafikā, nepārtraukti atjauninot īsāko attālumu no katra mezgla.Algoritms A*: metode, kas nepārtraukti atjaunina īsāko kursu uz katru diagrammas mezglu, lai noteiktu īsāko ceļu starp tiem.Prima algoritms: pieeja svērtā savienotā grafika mazākā aptverošā koka noteikšanai.Kruskala algoritms: pieeja, lai identificētu saistītās svērtās diagrammas zemāko aptverošo koku.Bellman-Ford algoritms: algoritms, kas pat tad, ja diagrammā ir negatīvs malu svars, parāda īsāko ceļu starp konkrētu piegādes mezglu un katru otro tīkla mezglu.

4. Kriptogrāfiskie algoritmi

C atbalsta zema līmeņa darbības un efektīvu datu manipulāciju, padarot to ideāli piemērotu kriptogrāfijā izmantoto algoritmu, piemēram, datu šifrēšanas un atšifrēšanas algoritmu, ieviešanai.

Ir dažādi šifrēšanas algoritmu veidi.

Viņi ir:-

    Hash algoritmi: šie algoritmi rada fiksēta izmēra izvades (jaucēju) no patvaļīga izmēra ievades. Piemēri: MD5, SHA-1 un SHA-2.Simetrisko atslēgu algoritmi: šifrēšanas un atšifrēšanas posmos šādos algoritmos tiek izmantota viena un tā pati privātā atslēga. AES, DES un Blowfish ir daži piemēri.Asimetrisko atslēgu algoritmi: Publiskā atslēga un nepubliskā atslēga šajās metodēs tiek izmantotas kā atsevišķas atslēgas šifrēšanai un atšifrēšanai. Daži piemēri ir RSA, ECC un DSA.Atslēgu apmaiņas algoritmi: šie algoritmi ļauj divām pusēm droši apmainīties ar atslēgām nedrošā kanālā. Piemēram, mēs varam minēt Difiju-Helmenu un Eliptiskās līknes Difiju-Helmanu.

Algoritma priekšrocības

Algoritmiem ir daudz priekšrocību.

viņi ir:-

    Ātrums un efektivitāte: algoritmi var ātri un precīzi apstrādāt lielus datu apjomus, padarot tos noderīgus uzdevumiem, kas ir pārāk laikietilpīgi vai ir pakļauti kļūdām, lai tos veiktu cilvēki.Konsekvence: Algoritmi ievēro iepriekš noteiktu vadlīniju kopumu. Tas var radīt konsekventus rezultātus, neietekmējot personīgos aizspriedumus un emocijas.Automatizācija: Algoritmi var veikt uzdevumus automātiski, ļaujot cilvēkiem koncentrēties uz sarežģītākiem vai radošākiem uzdevumiem.Paaugstināta precizitāte: Algoritmi bieži var sasniegt augstāku precizitātes līmeni nekā cilvēki, īpaši, ja tiek apstrādāti lieli datu apjomi.Labāka lēmumu pieņemšana: algoritmi palīdz mums pieņemt apzinātākus un objektīvākus lēmumus, analizējot datus un identificējot modeļus un tendences, kas cilvēkiem nav viegli pamanāmas.Mērogojamība: Algoritmus var viegli palielināt vai samazināt, lai tie atbilstu mainīgajām prasībām un darba slodzei.

Algoritma trūkumi

Algoritmi ir ļoti noderīgi programmēšanai, taču algoritmiem ir trūkumi.

viņi ir:-

    Ierobežots apjoms: Algoritmi var atrisināt problēmas tikai to darbības jomā, un tie var nebūt spējīgi atrisināt sarežģītas vai abstraktas problēmas.Aizspriedums: Algoritmi var saglabāt un pastiprināt apmācībā izmantoto datu novirzes, izraisot negodīgus rezultātus.Nepietiekama pārredzamība: Daudzi algoritmi slēpj procesu, kurā viņi nonāk pie secinājumiem. Tas varētu apgrūtināt rezultātu pārdomāšanu vai pārbaudi.Paļaušanās uz datu precizitāti:Noteikumu kopuma pareizība ir ļoti atkarīga no instrukcijā izmantoto datu precizitātes un piemērojamības. Neprecīzi vai neprecīzi efekti var būt kļūdainu datu rezultāts.ierobežota pielāgošanās spēja:Algoritmi ir izstrādāti, lai ievērotu vadlīnijas, un tie nepielāgosies mainīgajiem apstākļiem un apstākļiem.