logo

C dilinde algoritma

Algoritma, bir sorunu çözmek veya bir işi tamamlamak için önceden belirlenmiş bir sırayla gerçekleştirilen talimatlar dizisidir. Fonksiyon, programın diğer kısımlarından çağrılabilen ve çalıştırılabilen bir kod bloğudur.

Bir sorunu çözmek veya belirli bir etkinliği gerçekleştirmek için bir dizi talimat. Bilgisayar bilimlerinde algoritmalar, temel matematikten karmaşık veri işlemeye kadar çok çeşitli işlemler için kullanılır.

C'de kullanılan yaygın algoritmalardan biri sıralama algoritmasıdır. Sıralama algoritması, öğelerin bir koleksiyonunu sayısal veya alfabetik gibi belirli bir sıraya göre düzenler.

Her birinin avantajları ve dezavantajları olan birçok sıralama algoritması vardır. C'deki en yaygın sıralama algoritmaları hızlı sıralama, birleştirme ve sıralamadır.

C'nin en önemli özelliklerinden biri işaretçi desteğidir. Bu, diziler, kuyruklar vb. gibi veri yapılarının verimli bir şekilde manipülasyonuna olanak tanır. Bu, onu sıralama ve algoritmik arama gibi karmaşık veri manipülasyonu gerektiren algoritmaların uygulanması için uygun hale getirir.

C'de uygulanan yazılım kütüphanesinin ünlü örneklerinden biri Standart Şablon Kütüphanesidir (STL). Bu kütüphane, veri yapılarını sıralama, arama ve değiştirme gibi görevler için çok çeşitli algoritmalar sağlar.

Algoritmanın özellikleri

Algoritmanın aşağıdakiler de dahil olmak üzere birçok önemli özelliğini tanımlar:

    Girişler: Algoritmalar, değer veya veri olarak temsil edilebilecek girdiler almalıdır.Çıktı: Algoritma bazı çıktılar üretmelidir. Bir problemin sonucu ya da onu çözmek için tasarlanmış bir çözüm olabilir.Netlik: Algoritmalar, bir bilgisayarın veya başka bir sistemin net bir şekilde takip edebileceği net talimatlar kullanılarak kesin olarak tanımlanmalıdır.Sonluluk: Algoritma sınırlı adımlar gerektirir. Bu, belirli sayıda komut yürütüldükten sonra çıkılması gerektiği anlamına gelir.Geçerlilik: Algoritma geçerli olmalıdır. Başka bir deyişle, algoritmanın çözmek üzere tasarladığı soruna makul bir sürede çözüm üretebilmelidir.Verimlilik:Bir algoritma etkili olmalı, yani çözmek için tasarlandığı soruna makul bir sürede çözüm üretebilmelidir.Genellik:Bir algoritmanın genel olması, yani tek bir soruna özgü olmaktan ziyade çok çeşitli sorunlara uygulanabilmesi gerekir.

Algoritma Analizi

Algoritmik analiz, algoritma performansını verimlilik, karmaşıklık ve diğer kriterler açısından değerlendirme sürecidir. Tipik olarak bu, birçok algoritmayı değerlendirmek ve belirli bir sorun veya yazılım için en uygun çözümü seçmek için yapılır.

Algoritmaların analizi genellikle zaman ve mekan karmaşıklığının ölçülmesini içerir.

İhtiyaç duyulan bellek veya disk alanı miktarını tanımlayan alan karmaşıklığında olduğu gibi, zaman karmaşıklığı da bir algoritmanın bir görevi gerçekleştirmek için ne kadar süre belirlediğini tanımlar.

Algoritmaların zaman karmaşıklığını analiz etmenin Büyük O ve Omega gösterimi gibi farklı yolları vardır. Omega sembolü algoritmanın zaman karmaşıklığı için bir üst sınır sağlarken, Omega sembolü bir alt sınır sağlar.

Algoritma analizi, zaman ve uzay karmaşıklığını ölçmenin yanı sıra kararlılık, paralellik ve ölçeklenebilirlik gibi diğer kriterleri de içerir.

    istikrar: - Bu, algoritmanın veri kümesindeki öğelerin göreceli sırasını koruma yeteneğini ifade eder.Paralelleştirme: - Bu, birden fazla işlemcide işlemleri paralel olarak yürütme kapasitesini ifade eder.Ölçeklenebilirlik:- Öte yandan, bir algoritmanın büyük hacimli verileri ve diğer girdileri işleme yeteneğini ifade eder.

İki tür analiz içerirler.

bunlar:-

dizeyi enum'a dönüştür
  1. Ön analiz.
  2. Arka analiz.

Ön Analiz

Prior, algoritmayı gerçekte çalıştırmadan, matematiksel özelliklerine dayalı olarak bir algoritmanın performansını tahmin etmeye odaklanan bir algoritma analizi yöntemidir.

Bu yaklaşım, algoritmaları uygulamanıza ve çalıştırmanıza gerek kalmadan algoritmaların ve diğer ölçümlerin zaman ve uzay karmaşıklığını analiz etmenize olanak tanır.

Arka analiz

Posterior analiz ise algoritmayı gerçekten çalıştıran ve performansını ölçen bir algoritma analizi yöntemidir.

Bu yaklaşım, algoritmanın performansı hakkında daha doğru ve ayrıntılı bilgi sağlar ancak algoritmanın uygulanmasını ve yürütülmesini gerektirir.

Algoritma Karmaşıklığı

Algoritmik karmaşıklık, algoritmanın verimliliğini ve performansını ölçen bir ölçüdür. Algoritmalar genellikle bir sorunu çözmek veya belirli bir hedefe ulaşmak için gereken zaman ve alan açısından değerlendirilir.

Algoritmanın karmaşıklığında iki faktör kullanılmaktadır.

bunlar:-

  1. Zaman faktörü.
  2. Uzay faktörü.

Zaman faktörü

  • Bir algoritmanın bir görevi yerine getirmek için ihtiyaç duyduğu süreye zaman karmaşıklığı denir. Genellikle bir algoritmanın bir sorunu çözmek için gerçekleştirmesi gereken işlem veya adım sayısıyla ölçülür.
  • Bir algoritmanın zaman karmaşıklığı önemlidir çünkü yürütülmesinin ne kadar süreceğini belirler ve program ve sistem performansı üzerinde önemli bir etkiye sahip olabilir.
  • Bir algoritmanın zaman karmaşıklığı, bir algoritmanın zaman karmaşıklığının üst sınırını ifade etmenin bir yolu olan Büyük O gösterimi kullanılarak ifade edilebilir.
  • Zaman karmaşıklığı O(n) olan bir algoritma, algoritmayı çalıştırmak için gereken sürenin girdi verilerinin (n) boyutuyla doğru orantılı olduğu anlamına gelir.
  • Diğer yaygın zaman karmaşıklıkları O(n^2) ikinci dereceden karmaşıklık ve O(log n) logaritmik karmaşıklıktır.

Uzay analizi

  • Öte yandan alan karmaşıklığı, algoritmayı yürütmek için gereken bellek veya depolama alanı miktarını ifade eder.
  • Bu önemlidir çünkü uygulamanızın veya sisteminizin genel performansını etkileyebilecek algoritmaları çalıştırmak için gereken kaynak sayısını belirler.
  • Algoritmanın uzay karmaşıklığı O(n) ise, girişin boyutuyla doğrusal olarak büyüyen bir miktar bellek kullanır.
  • Algoritma O(1) alan karmaşıklığına sahipse, girişin boyutundan bağımsız olarak sabit miktarda bellek kullanır.

Algoritma nasıl yazılır?

1. Öncelikle algoritmanın çözmesini istediğiniz sorunu tanımlayın.

Örneğin, bir sayı listesinden maksimum değeri bulan bir algoritma yazmak istediğimizi varsayalım.

2. Sorunu daha küçük, yönetilebilir adımlara ayırın.

  • 'Max' değişkenini listedeki ilk değere başlatın.
  • Listedeki sonraki her değer için 'max' ile karşılaştırın.
  • Değer 'maks'tan büyükse, 'maks'ı bu değere ayarlayın.
  • Listedeki her değer karşılaştırılana kadar bunu yapmaya devam edin.
  • Son 'max' değerini döndürür.

3. Algoritmanızı sözde kodla veya bir programlama dilinde yazın.

Sahte kodla yazılmış algoritma:

 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. Doğru ve etkili olduğundan emin olmak için algoritmanızı test edin.

Farklı sayı listeleri girerek ve maksimum doğru değeri döndürdüğünü doğrulayarak algoritmayı test edebilirsiniz. Daha büyük girdiler için ne kadar iyi ölçeklendiğini belirlemek amacıyla algoritmanızın zaman karmaşıklığını da analiz edebilirsiniz.

Örnek:-

Giriş: [1, 5, 2, 7, 3]

Çıkış: 7.

Açıklama: 7, listedeki maksimum değerdir.

Java'nın başlatılması

5. Algoritmayı optimize edin.

Algoritmalarınızı daha hızlı ve daha verimli hale getirecek şekilde optimize etmenin yollarını arayın. Bu, sözde kodun değiştirilmesini veya daha verimli veri yapılarının veya algoritmaların uygulanmasını içerebilir.

Algoritmaların temel yazımı

Örnek: - İki tam sayının toplamı.

Aşama 1 - Başlamak

Adım 2 - Üç tamsayı a, b, c bildirin

Aşama 3 - a ve b'nin değerlerini tanımlayın

4. Adım - a ve b'nin değerlerini toplayın

Adım 5 - 4. adımın çıktısını c'ye kaydedin

Adım 6 - C'yi yazdır

Adım 7 - Durmak

C dilinde kullanılan algoritma türleri.

1. Sıralama algoritmaları

C, kabarcık sıralama, ekleme sıralama ve hızlı sıralama gibi çeşitli sıralama algoritmalarını uygulamak için kullanılabilecek zengin bir veri türleri ve operatör seti sağlar.

Bu algoritmalar birçok uygulamada kullanışlıdır çünkü farklı boyut ve türdeki verileri sıralamak için kullanılabilirler.

Farklı sıralama algoritmaları vardır.

bunlar:-

(i) Kabarcık sıralaması: Yakındaki bileşenleri tekrar tekrar karşılaştıran ve arızalı olmaları durumunda bunları devre dışı bırakan karmaşık olmayan bir sıralama algoritması.

Kabarcık sıralaması için Algoritma: -

  1. Sıralanmamış bir öğe listesiyle başlayın.
  2. Listedeki ilk iki öğeyi karşılaştırın. İlk eleman ikinci elemandan daha büyükse, bunları değiştirin.
  3. Bir sonraki öğe çiftine geçin ve listenin sonuna ulaşılıncaya kadar 2. adımı tekrarlayın.
  4. Listedeki her öğe için 2. ve 3. adımları bir kez daha tekrarlayın. buna geçişler denir.
  5. Listenin tamamı için 2-4. adımları tekrarlayın. Geçişleri tekrarladığınızda öğeler, sıralanmış listedeki doğru konumlarına 'kabarcıklar' ilerleyecektir.
  6. Geçiş tamamlandığında ve herhangi bir değişiklik yapılmadığında liste sıralanır ve algoritma durabilir.
  7. Son sıralanmış liste döndürülür.

(ii) Ekleme sıralaması : Her birini uygun noktaya yerleştirerek her seferinde tek bir öğenin sıralandığı bir liste oluşturan bir sıralama yöntemi.

Ekleme sıralaması için Algoritma: -

  1. Sıralanacak öğelerin boş bir sıralanmış listesini ve sıralanmamış bir listesini başlatın.
  2. Sıralanmamış listeden ilk üye alınmalı ve sıralanmış listede uygun konuma yerleştirilmelidir.
  3. Sıralanmamış listedeki sonraki her öğe için 2. adımı tekrarlayın.
  4. Geçerli öğeyi, hemen soldaki öğeden başlayarak sıralanmış listedeki öğelerle karşılaştırın.
  5. Geçerli öğe solundaki öğeden küçükse iki öğenin yerini değiştirin.
  6. Geçerli öğe solundaki öğeden büyükse, onu sıralanmış listede doğru konumuna ekleyin.
  7. Sıralanmamış listedeki sonraki her öğe için 4-6 arasındaki adımları tekrarlayın.
  8. Tüm öğeler işlendikten sonra, sıralanan liste tüm öğeleri doğru sırayla içerecektir.
  9. Sıralama işlemi tamamlandı.

(iii) Seçim sıralaması : sıralanmış listelemeyi, sıralanmamış listelemeden en küçük ayrıntıyla tutarlı bir şekilde başlatan bir sıralama yöntemi.

Seçim sıralaması için Algoritma şöyledir: -

  1. Listenin birincil öğesini min öğesi olarak ayarlayarak başlayın.
  2. Her birini mevcut minimum değerle karşılaştırarak listedeki geri kalan öğeleri tekrarlayın.
  3. Bir öğenin mevcut olandan daha küçük olduğu tespit edilirse yeni bir minimum değer belirleyin.
  4. Geçerli minimum değeri, sonuca ulaştığında listenin ilk öğesiyle değiştirin.
  5. Listenin geri kalan sıralanmamış kısmı için 2-4. adımları tekrarlayın, ancak listedeki ikinci öğeyle başlayın (ilk öğe zaten sıralanmış olduğundan).
  6. Listeyi tamamı sıralanıncaya kadar bu şekilde sıralamaya devam edin.

(iv) Hızlı sıralama : Bir pivot öğesi seçen ve öğelerin pivottan daha az veya daha fazla olmasına bağlı olarak listeyi alt listelere bölen bir böl ve yönet sıralama algoritması. Bundan sonra alt listeler, tam liste sıralanana kadar tekrar tekrar sıralanır.

Hızlı sıralama algoritması: -

  1. Listeden bir pivot öğesi seçin. Bu genellikle ilk öğedir, ancak aynı zamanda rastgele bir öğe veya listenin medyanı da olabilir.
  2. Listeyi iki alt listeye bölün: biri pivottan küçük öğeleri içeren, diğeri pivottan büyük öğeleri içeren.
  3. Aynı işlemi kullanarak pivottan daha az öğe içeren alt listeyi yinelemeli olarak sıralayın.
  4. Pivottan daha büyük girdilerin alt listesini yinelemeli olarak sıralamak için aynı prosedürü kullanın.
  5. Tamamen sıralanmış bir liste oluşturmak için sıralanan alt listeleri aradaki pivot öğesiyle birleştirin.
  6. Tamamen sıralanmış listeyi döndürün.

(v) Çok şey gidiyor : Böl ve yönet sıralama algoritması, listeyi iki yarıya böler, her yarıyı sıralar ve ardından iki yarıyı sıralı düzende birleştirir.

Birleştirme-sıralama algoritması:

  1. Listeden iki alt liste yapın: biri pivotun altındaki öğelere, diğeri pivotun üstündeki öğelere sahip.
  2. Yalnızca bir alt liste var olana kadar alt listeleri yinelemeli olarak birleştirerek yeni bir sıralanmış alt liste üretir. Bu sizin sıralanmış listeniz olacak.
  3. İki alt dizini birleştirme adımları: -
  4. Sıralanan öğeleri tutmak için boş bir liste oluşturun.
  5. Her alt listenin ilk öğesini karşılaştırır.
  6. Küçük öğeyi yeni listeye ekler ve üst alt listeden kaldırır.
  7. Liste tamamen boşalana kadar 2. ve 3. adımları tekrarlayın.
  8. Diğer alt listelerden kalan öğeleri yeni bir listeye ekler.
  9. Birleştirilmiş alt listeyi yeni sıralanmış listeyle değiştirir.
  10. Tüm alt listeler tek bir sıralı listede birleştirilene kadar bu işlemi tekrarlayın.

(vi) Yığın sıralaması : Öbek adı verilen bir veri yapısını kullanarak öğeleri sıralayan bir sıralama algoritması.

Bu sınıflandırma algoritmasıdır:

    Maksimum yığın oluştur: İlk yaprak olmayan düğümden başlayarak, her düğümü alt düğümleriyle karşılaştırın ve max heap özelliğini karşılamak için düğümleri alt öğelerinin en büyüğüyle değiştirin.Kökü son öğeyle değiştir: Kökü (en büyük öğeyi) yığındaki son öğeyle değiştirin.
  1. Geri kalan elemanları istifleyin. Kökten başlayarak, her düğüm kendi çocukları ile karşılaştırılır ve maksimum yığın özelliği karşılanana kadar düğümler daha büyük çocuklarıyla değiştirilir.
  2. Doğru konumdaki son öğe hariç, yeni yığılmış öğelerle 2. ve 3. adımları tekrarlayın.
  3. Yığında yalnızca bir öğe kalana kadar bu işlemi tekrarlayın. Bu artık sıralandı.
  4. Aşağı Yığınla: Kök düğümden başlayarak, elemanları alt öğeleriyle karşılaştırır ve max heap özelliği karşılanana kadar ikisinden büyük olanıyla takas yapar.Yığma: Yığındaki son öğeyle başlayın, onu ebeveyniyle karşılaştırın ve max heap özelliğini karşılamak için onu ebeveynle değiştirin.

(vii) Taban sıralaması : Öğeleri ikili temsillerinin rakamlarına veya rakamlarına göre sıralayan bir sıralama algoritması.

Radix sıralaması için Algoritma: -

  1. giriş listesinin en büyük öğesinde kaç basamak bulunduğunu belirleyin.
  2. Geçerli rakam basamağını temsil eden bir değişkeni, örneğin rakam basamağı, 1 olarak başlatın.
  3. 0'dan 9'a kadar her olası rakam değeri için boş bir liste oluşturun.
  4. Giriş listesini yineleyin ve her öğeyi mevcut rakam basamağının değerine göre uygun listeye ekleyin.
  5. Yeni listeyi rakam listelerinin sırasına göre oluşturmak için tüm listeleri birleştirin.
  6. Bir sonraki haneye geçmek için rakamPlace'i 10 ile çarpın.
  7. En büyük öğedeki tüm rakamlar dikkate alınana kadar her rakam basamağı için 4-6 arasındaki adımları tekrarlayın.
  8. Nihai liste, öğelerin rakamlarına göre artan sırada sıralanacaktır.
  9. Son sıralanmış listeyi döndürün.

2. Arama algoritmaları

C ayrıca doğrusal arama ve ikili arama gibi çeşitli arama algoritmalarını uygulamak için gerekli araçları da sağlar. Bu algoritmalar, bir veri kümesindeki belirli öğeleri hızlı bir şekilde bulabilir ve bu da onları çok çeşitli uygulamalar için kullanışlı hale getirir.

Birçok arama algoritması türü vardır.

Bunlar:-

(i) Doğrusal arama : İstenilen öğeyi bulana kadar listedeki her öğeyi tek tek inceleyen temel bir arama algoritması.

Doğrusal arama algoritması: -

  1. Algoritmanın girdisini tanımlayın: Doğrusal bir arama algoritmasının girdisi, bir öğeler listesi (veya bir dizi) ve aradığımız bir hedef öğedir.
  2. 'Index' adı verilen bir değişkeni -1 olarak başlat: Bu değişken, bulunursa hedef öğenin dizinini depolamak için kullanılacaktır.
  3. Öğeler listesinde dolaşın: İlk öğeden başlayarak listedeki her öğeyi tek tek kontrol edin.
  4. Değerlendirme için mevcut öğeyi istenen öğeyle karşılaştırın: Geçerli öğenin dizinini dizin değişkeninde tutun ve modern öğe ile hedef öğe aynıysa döngüden çıkın.
  5. Hedef elemanın indeksini döndürün: Döngü tamamlandıktan sonra indeks değişkeninde saklanan değeri döndürün. Eğer hedef eleman bulunamazsa indeksin değeri -1 olacaktır.

(ii) İkili arama : Listeyi ikiye bölerek çalışan ve bu yarıların içinde arama yapan bir arama algoritmasının öğeyi içerme olasılığı daha yüksektir.

İkili arama algoritması: -

  1. Girdi: n öğeden ve bir hedef öğe x'ten oluşan sıralanmış bir liste.
  2. Değişkenleri başlat: Düşük endeksi 0'a, yüksek endeksi n-1'e ve orta değeri (düşük+yüksek)/2'ye ayarlayın.
  3. Bir döngü başlatın: Düşük indeks yüksek indeksten küçük veya ona eşitken aşağıdaki adımları tekrarlayın.
  4. Orta öğeyi x ile karşılaştırın: Orta öğe x'e eşitse orta dizini döndürün.
  5. Düşük veya yüksek endeksi güncelleyin: Eğer x, orta öğeden büyükse, düşük endeksi orta + 1'e ayarlayın. Aksi takdirde, yüksek endeksi orta - 1'e ayarlayın.
  6. Orta endeksi güncelleyin: Orta = (düşük+yüksek)/2.
  7. Döngünün sonu: Eğer düşük indeks yüksek indeksten büyükse, x listede değildir ve algoritma bir hata döndürür.
  8. Çıktı: Listedeki veya hata mesajındaki x'in dizini.

(iii) Derinlik öncelikli arama : Geri dönmeden önce her bir dalı mümkün olduğu kadar inceleyen bir arama algoritması.

Derinlik öncelikli arama için aşağıdaki yönergeler geçerlidir:

  1. başlamak için grafiğin başlangıç ​​köşesini veya düğümünü seçin.
  2. İlk köşe noktasına bir ziyaret işareti ekleyin.
  3. Başlangıç ​​köşesini doğrudan bir yığına yerleştirin.
  4. Yığın boşalana kadar aşağıdaki işlemleri tekrarlayın: -
    • Yığının üst köşesini kaldırın.
    • Ziyaret edildi olarak işaretleyin ve açılan köşenin ziyaret edilmeyen her komşusunu yığına ekleyin.
  5. Grafikteki tüm köşeler ziyaret edilene kadar bu işleme devam edin.
  6. Tüm köşeler ziyaret edildikten sonra algoritma tamamlanır ve grafik üzerinde derinlik öncelikli arama gerçekleştirilir.

(iv) Genişlik öncelikli arama : Bir sonraki seviyeye geçmeden önce bir düğümün tüm komşularını araştıran bir arama algoritması.

Genişlik öncelikli aramanın algoritması şöyledir: -

  1. Kök düğümle veya başlangıç ​​durumuyla başlayın.
  2. Kök düğümü bir kuyruğa ekleyin.
  3. Kuyruğun boş olup olmadığını kontrol edin; evet ise, algoritmayı sonlandırın.
  4. Kuyruktan ilk öğeyi alın ve ziyaret edildi olarak işaretleyin.
  5. Ziyaret edilmeyen tüm komşularını kuyruğa ekleyerek çağdaş düğümü güçlendirin.
  6. İstenilen düğüm bulunana veya sıra boşalıncaya kadar 3'ten 5'e kadar olan adımları tekrarlayın.
  7. Hedef düğüm bulunursa yolu ön durumdan hedef duruma döndürün.
  8. Kuyruk boşsa kural kümesini sonlandırın ve hedef durumun tanımlanmadığını bildirin.

(v) Enterpolasyon Araması : Dizindeki konumu tahmin etmek için aranan öğelerin değerlerini kullanan bir arama algoritması.

Dizinin eşit şekilde dağıtılması önemlidir. Aksi halde bu bir algoritmadır.

Beklendiği gibi çalışıyor.

Algoritma şu şekilde özetlenebilir.

  1. Aranacak giriş listesini ve anahtar değerini alın.
  2. Listenin ilk ve son indekslerindeki alt ve üst değişkenleri başlatın.
  3. Düşük değer yüksek değerden küçükse veya ona eşitse, o zaman: -
    1. Aşağıdaki formülü kullanarak tahmini konumu hesaplayın:
      konum = düşük + ((yüksek - düşük) / (dizi[yüksek] - dizi[düşük])) * (x - dizi[düşük]).
    2. Tahmini konum değeri bir anahtar değerse konumu döndürün.
    3. c) Tahmini konum değeri anahtar değerden küçükse daha düşük bir değere ayarlayın.
      Konum + 1.
    4. d) Tahmini konumun değeri anahtar Set değerinden büyükse konum - 1 yukarı.
  4. Anahtar değeri bulunamazsa, değerin listede olmadığını belirtmek için -1 değerini döndürün.

(vi) Atlamalı arama : İlgili öğeyi bulana veya öğenin artık mevcut olmadığını belirleyene kadar liste üzerinde sabit uzunlukta adımlarla yinelenen bir arama yöntemi.

Atlama arama algoritması aşağıdaki gibidir:

  1. İlk olarak atlama boyutunu dizi öğesi sayısının kareköküne ayarlayın.
  2. 'Geçerli' adlı bir değişkeni dizinin ilk öğesine ayarlar.
  3. 'Jump' adı verilen bir değişkeni artırırken atlama boyutuna göre atlayarak dizi üzerinde yinelenir.
  4. Mevcut öğe istenen öğeden küçükse bir sonraki aşamaya geçin.
  5. Geçerli öğe hedef öğeden büyükse hedef öğeyi bulmak için geçerli öğe ile önceki atlama öğesi arasında doğrusal bir arama gerçekleştirin.
  6. Hedef eleman dizide bulunamazsa, dizide olmadığını belirtmek için -1 değerini döndürür.
  7. Eleman bulunursa dizideki elemanın indeksini döndürür.

3. Grafik algoritmaları

C'nin işaretçileri ve diziler ve bağlantılı listeler gibi veri yapılarını desteklemesi, onu bir grafikteki iki düğüm arasındaki en kısa yolu bulmak gibi grafikleri değiştiren algoritmaların uygulanması için uygun hale getirir.

Farklı türde grafik algoritmaları vardır.

bunlar:-

    Dijkstra'nın Algoritması: Bir grafikteki iki düğüm arasındaki en kısa yolu, her düğüme olan en kısa mesafeyi sürekli olarak güncelleyerek bulan bir algoritma.Algoritma A*: Aralarındaki en kısa rotayı belirlemek için bir grafikteki her düğüme giden en kısa rotayı sürekli olarak güncelleyen bir yöntem.Prim'in Algoritması: Ağırlıklandırılmış bağlantılı grafiğin en küçük kapsayan ağacını bulmaya yönelik bir yaklaşım.Kruskal'ın algoritması: Bağlantılı ağırlıklı grafiğin en düşük kapsayan ağacını belirlemeye yönelik bir yaklaşım.Bellman-Ford Algoritması: Grafiğin negatif kenar ağırlıkları olsa bile, belirli bir tedarik düğümü ile ağdaki diğer tüm düğümler arasındaki en kısa yolu görüntüleyen bir algoritma.

4. Kriptografik Algoritmalar

C, düşük seviyeli işlemleri ve verimli veri manipülasyonunu destekleyerek veri şifreleme ve şifre çözme algoritmaları gibi kriptografide kullanılan algoritmaların uygulanması için idealdir.

Farklı türde şifreleme algoritmaları vardır.

tarih dizgeye dönüştürülür

Bunlar:-

    Karma Algoritmalar: Bu algoritmalar, rastgele boyutlu girdilerden sabit boyutlu çıktılar (karma) üretir. Örnekler arasında MD5, SHA-1 ve SHA-2 yer alır.Simetrik anahtar algoritmaları: Bu tür algoritmalardaki şifreleme ve şifre çözme adımları aynı özel anahtarı kullanır. AES, DES ve Blowfish birkaç örnektir.Asimetrik anahtar algoritmaları: Bir genel anahtar ve bir genel olmayan anahtar, bu yöntemler tarafından şifreleme ve şifre çözme için ayrı anahtarlar olarak kullanılır. Bazı örnekler arasında RSA, ECC ve DSA yer alır.Anahtar değişim algoritmaları: Bu algoritmalar, iki tarafın güvenli olmayan bir kanal üzerinden güvenli bir şekilde anahtar alışverişi yapmasına olanak tanır. Örnek olarak Diffie-Hellman ve Eliptik Eğri Diffie-Hellman'dan bahsedebiliriz.

Algoritmanın avantajları

Algoritmaların birçok avantajı vardır.

bunlar:-

    Hız ve verimlilik: Algoritmalar büyük miktarda veriyi hızlı ve doğru bir şekilde işleyebilir, bu da onları insanların gerçekleştiremeyeceği kadar zaman alan veya hataya açık olan görevler için faydalı hale getirir.Tutarlılık: Algoritmalar önceden belirlenmiş bir dizi yönergeyi takip eder. Kişisel önyargılardan ve duygulardan etkilenmeden tutarlı sonuçlar üretebilir.Otomasyon: Algoritmalar görevleri otomatik olarak gerçekleştirebilir ve böylece insanların daha karmaşık veya yaratıcı görevlere odaklanmalarına olanak tanır.Arttırılmış doğruluk: Algoritmalar, özellikle büyük miktarda veriyle uğraşırken çoğu zaman insanlardan daha yüksek düzeyde doğruluk elde edebilir.Daha İyi Karar Verme: Algoritmalar, verileri analiz ederek ve insanların kolayca göremediği kalıpları ve eğilimleri belirleyerek daha bilinçli ve objektif kararlar almamıza yardımcı olur.Ölçeklenebilirlik: Algoritmaların ölçeği, değişen talepleri ve iş yüklerini karşılayacak şekilde kolaylıkla büyütülebilir veya küçültülebilir.

Algoritmanın dezavantajları

Algoritmalar programlama için çok faydalıdır ancak algoritmaların dezavantajları vardır.

bunlar:-

    Sınırlı kapsam: Algoritmalar yalnızca kendi kapsamlarındaki sorunları çözebilir, karmaşık veya soyut sorunları çözemeyebilir.Ön yargı: Algoritmalar, eğitim için kullanılan verilerdeki önyargıları sürdürebilir ve güçlendirebilir, bu da adil olmayan sonuçlara yol açabilir.Yetersiz şeffaflık: Birçok algoritma, sonuçlara vardıkları süreci gizler. Bu, sonuçları düşünmeyi veya kontrol etmeyi zorlaştırabilir.Verilerin doğruluğuna güvenme:Kurallar dizisinin doğruluğu büyük ölçüde öğretimde kullanılan verilerin doğruluğuna ve uygulanabilirliğine bağlıdır. Hatalı veya hatalı etkiler hatalı verilerden kaynaklanabilir.Kısıtlanmış uyarlanabilirlik:Algoritmalar yönergeleri takip edecek şekilde tasarlanmıştır ve değişen şartlara ve koşullara uyum sağlamayacaktır.