logo

الخوارزمية في لغة C

الخوارزمية هي سلسلة من التعليمات التي يتم تنفيذها في تسلسل محدد مسبقًا لحل مشكلة ما أو إكمال العمل. الوظيفة عبارة عن كتلة من التعليمات البرمجية التي يمكن استدعاؤها وتنفيذها من أجزاء أخرى من البرنامج.

مجموعة من التعليمات لحل مشكلة ما أو القيام بنشاط معين. في علوم الكمبيوتر، تُستخدم الخوارزميات في مجموعة واسعة من العمليات، بدءًا من الرياضيات الأساسية وحتى معالجة البيانات المعقدة.

إحدى الخوارزميات الشائعة المستخدمة في لغة C هي خوارزمية الفرز. تقوم خوارزمية الفرز بترتيب مجموعة من العناصر بترتيب معين، مثل الترتيب العددي أو الأبجدي.

هناك العديد من خوارزميات الفرز، ولكل منها مزايا وعيوب. خوارزميات الفرز الأكثر شيوعًا في لغة C هي الفرز السريع والدمج والفرز.

إحدى الميزات الرئيسية لـ C هي دعم المؤشر. وهذا يسمح بالمعالجة الفعالة لهياكل البيانات مثل المصفوفات وقوائم الانتظار وما إلى ذلك. وهذا يجعلها مناسبة لتنفيذ الخوارزميات التي تتطلب معالجة معقدة للبيانات، مثل الفرز والبحث الخوارزمي.

أحد الأمثلة الشهيرة لمكتبة البرامج المطبقة في لغة C هي مكتبة النماذج القياسية (STL). توفر هذه المكتبة مجموعة واسعة من الخوارزميات لمهام مثل الفرز والبحث ومعالجة هياكل البيانات.

ميزات الخوارزمية

ويحدد العديد من الميزات الهامة للخوارزمية، بما في ذلك:

    المدخلات: يجب أن تتلقى الخوارزميات مدخلات يمكن تمثيلها كقيم أو بيانات.انتاج |: يجب أن تنتج الخوارزمية بعض المخرجات. يمكن أن يكون نتيجة لمشكلة أو حل مصمم لحلها.وضوح: يجب أن يتم تعريف الخوارزميات بدقة، باستخدام تعليمات لا لبس فيها يمكن لجهاز الكمبيوتر أو أي نظام آخر اتباعها بشكل لا لبس فيه.النهاية: تتطلب الخوارزمية خطوات محدودة. وهذا يعني أنه يجب الخروج منه بعد تنفيذ عدد معين من الأوامر.صلاحية: يجب أن تكون الخوارزمية صالحة. بمعنى آخر، يجب أن تكون قادرة على تقديم حل للمشكلة التي صممت الخوارزمية لحلها في فترة زمنية معقولة.فعالية:يجب أن تكون الخوارزمية فعالة، مما يعني أنها يجب أن تكون قادرة على تقديم حل للمشكلة التي صممت لحلها في فترة زمنية معقولة.عمومية:يجب أن تكون الخوارزمية عامة، مما يعني أنه يمكن تطبيقها على مجموعة واسعة من المشكلات بدلاً من أن تكون محددة لمشكلة واحدة.

تحليل الخوارزمية

التحليل الخوارزمي هو عملية تقييم أداء الخوارزمية من حيث الكفاءة والتعقيد وغيرها من المعايير. وعادةً ما يتم ذلك لتقييم العديد من الخوارزميات واختيار الحل الأمثل لمشكلة معينة أو برنامج معين.

يتضمن تحليل الخوارزميات عادةً قياس تعقيد الزمان والمكان.

كما هو الحال مع تعقيد المساحة، الذي يصف مقدار الذاكرة أو مساحة القرص المطلوبة، يصف تعقيد الوقت المدة التي تحددها الخوارزمية لأداء مهمة ما.

هناك طرق مختلفة لتحليل التعقيد الزمني للخوارزميات، مثل تدوين Big O وOmega. يوفر رمز أوميغا حدًا أعلى للتعقيد الزمني للخوارزمية، بينما يوفر رمز أوميغا حدًا أدنى.

بالإضافة إلى قياس تعقيد الزمان والمكان، يتضمن تحليل الخوارزمية أيضًا معايير أخرى مثل الاستقرار والتوازي وقابلية التوسع.

    استقرار:- يشير هذا إلى قدرة الخوارزمية على الحفاظ على الترتيب النسبي للعناصر في مجموعة البيانات.التوازي:- يشير هذا إلى القدرة على تنفيذ العمليات بالتوازي عبر عدة معالجات.قابلية التوسع:- ومن ناحية أخرى، يشير إلى قدرة الخوارزمية على التعامل مع كميات كبيرة من البيانات والمدخلات الأخرى.

وهي تشمل نوعين من التحليل.

هم:-

  1. التحليل المسبق.
  2. التحليل الخلفي.

التحليل المسبق

Pre هي طريقة لتحليل الخوارزمية تركز على تقدير أداء الخوارزمية بناءً على خصائصها الرياضية دون تنفيذ الخوارزمية فعليًا.

يتيح لك هذا الأسلوب تحليل تعقيد الزمان والمكان للخوارزميات والمقاييس الأخرى دون الحاجة إلى تنفيذ الخوارزميات وتشغيلها.

التحليل الخلفي

التحليل اللاحق، من ناحية أخرى، هو طريقة لتحليل الخوارزمية التي تنفذ الخوارزمية فعليًا وتقيس أدائها.

يوفر هذا الأسلوب معلومات أكثر دقة وتفصيلاً حول أداء الخوارزمية، ولكنه يتطلب تنفيذ الخوارزمية وتنفيذها.

تعقيد الخوارزمية

التعقيد الخوارزمي هو مقياس لقياس كفاءة وأداء الخوارزمية. يتم تقييم الخوارزميات عادةً من حيث الوقت والمكان اللازمين لحل مشكلة ما أو تحقيق هدف محدد.

يتم استخدام عاملين في تعقيد الخوارزمية.

هم:-

كيفية اختيار الأعمدة من جداول مختلفة في SQL
  1. عامل الوقت.
  2. عامل الفضاء.

عامل الوقت

  • يُشار إلى مقدار الوقت الذي تحتاجه الخوارزمية للقيام بمهمة ما باسم التعقيد الزمني. ويتم قياسه عادةً بعدد العمليات أو الخطوات التي يجب أن تقوم بها الخوارزمية لحل المشكلة.
  • يعد التعقيد الزمني للخوارزمية مهمًا لأنه يحدد المدة التي يستغرقها التنفيذ ويمكن أن يكون له تأثير كبير على أداء البرنامج والنظام.
  • يمكن التعبير عن التعقيد الزمني للخوارزمية باستخدام تدوين Big O، وهي طريقة للتعبير عن الحد الأعلى للتعقيد الزمني للخوارزمية.
  • الخوارزمية ذات التعقيد الزمني O(n) تعني أن الوقت اللازم لتشغيل الخوارزمية يتناسب طرديًا مع حجم بيانات الإدخال (n).
  • التعقيدات الزمنية الشائعة الأخرى هي التعقيد التربيعي O(n^2) والتعقيد اللوغاريتمي O(log n).

تحليل الفضاء

  • من ناحية أخرى، يشير تعقيد المساحة إلى مقدار الذاكرة أو مساحة التخزين المطلوبة لتنفيذ الخوارزمية.
  • يعد هذا أمرًا مهمًا لأنه يحدد عدد الموارد المطلوبة لتشغيل الخوارزميات التي يمكن أن تؤثر على الأداء العام للتطبيق أو النظام الخاص بك.
  • إذا كان التعقيد المكاني للخوارزمية هو O(n)، فإنها تستخدم مقدارًا من الذاكرة ينمو خطيًا مع حجم الإدخال.
  • إذا كانت الخوارزمية تحتوي على تعقيد مساحة O(1)، فإنها تستخدم مقدارًا ثابتًا من الذاكرة بغض النظر عن حجم الإدخال.

كيفية كتابة خوارزمية

1. حدد أولاً المشكلة التي تريد أن تحلها الخوارزمية.

على سبيل المثال، لنفترض أننا نريد كتابة خوارزمية للعثور على القيمة القصوى من قائمة الأرقام.

2. قم بتقسيم المشكلة إلى خطوات أصغر يمكن التحكم فيها.

  • قم بتهيئة المتغير 'max' إلى القيمة الأولى في القائمة.
  • لكل قيمة لاحقة في القائمة، قارنها بـ 'الحد الأقصى'.
  • إذا كانت القيمة أكبر من 'الحد الأقصى'، فاضبط 'الحد الأقصى' على تلك القيمة.
  • استمر في القيام بذلك حتى تتم مقارنة كل قيمة في القائمة.
  • تُرجع قيمة 'الحد الأقصى' النهائية.

3. اكتب الخوارزمية الخاصة بك بالكود الكاذب أو لغة البرمجة.

الخوارزمية المكتوبة بالكود الزائف:

 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. اختبر الخوارزمية الخاصة بك للتأكد من صحتها وفعاليتها.

يمكنك اختبار الخوارزمية عن طريق إدخال قوائم مختلفة من الأرقام والتحقق من أنها تُرجع الحد الأقصى للقيمة الصحيحة. يمكنك أيضًا تحليل التعقيد الزمني للخوارزمية الخاصة بك لتحديد مدى قدرتها على التوسع في المدخلات الأكبر.

مثال:-

الإدخال: [1، 5، 2، 7، 3]

الإخراج: 7.

توضيح: 7 هي القيمة القصوى في القائمة.

5. تحسين الخوارزمية.

ابحث عن طرق لتحسين الخوارزميات لجعلها أسرع وأكثر كفاءة. قد يتضمن ذلك تعديل الكود الكاذب أو تنفيذ هياكل بيانات أو خوارزميات أكثر كفاءة.

الكتابة الأساسية للخوارزميات

مثال: - مجموع عددين صحيحين.

الخطوة 1 - البدء

الخطوة 2 - أعلن عن ثلاثة أعداد صحيحة أ، ب، ج

الخطوه 3 - تحديد قيم أ و ب

الخطوة 4 - أضف قيم أ و ب

الخطوة 5 - احفظ مخرجات الخطوة 4 في ج

الخطوة 6 - طباعة ج

الخطوة 7 - قف

أنواع الخوارزميات المستخدمة في لغة C.

1. فرز الخوارزميات

توفر لغة C مجموعة غنية من أنواع البيانات وعوامل التشغيل التي يمكن استخدامها لتنفيذ خوارزميات الفرز المختلفة، مثل فرز الفقاعات وفرز الإدراج والفرز السريع.

تعتبر هذه الخوارزميات مفيدة في العديد من التطبيقات لأنه يمكن استخدامها لفرز البيانات ذات الأحجام والأنواع المختلفة.

هناك خوارزميات فرز مختلفة.

هم:-

(ط) نوع الفقاعة: خوارزمية فرز غير معقدة تقارن المكونات القريبة بشكل متكرر وتقوم بإيقافها إذا كانت معطلة.

خوارزمية فرز الفقاعة هي: -

  1. ابدأ بقائمة غير مصنفة من العناصر.
  2. قارن بين العنصرين الأولين في القائمة. إذا كان العنصر الأول أكبر من العنصر الثاني، قم بتبديلهما.
  3. انتقل إلى زوج العناصر التالي وكرر الخطوة 2 حتى الوصول إلى نهاية القائمة.
  4. لكل عنصر في القائمة، كرر الخطوتين 2 و3 مرة أخرى. التي يشار إليها باسم التمريرات.
  5. كرر الخطوات من 2 إلى 4 للقائمة بأكملها. أثناء تكرار التمريرات، سوف 'تطفو' العناصر إلى موضعها الصحيح في القائمة التي تم فرزها.
  6. بمجرد اكتمال التمريرة وعدم إجراء أي تبديل، يتم فرز القائمة ويمكن أن تتوقف الخوارزمية.
  7. يتم إرجاع القائمة النهائية التي تم فرزها.

(ثانيا) نوع الإدراج : طريقة فرز تقوم بإنشاء قائمة مرتبة بعنصر فردي واحد في كل مرة عن طريق وضع كل عنصر في المكان المناسب.

خوارزمية فرز الإدراج هي: -

  1. قم بتهيئة قائمة مفروزة فارغة وقائمة غير مصنفة بالعناصر المطلوب فرزها.
  2. يجب أخذ العضو الأول من القائمة التي لم يتم فرزها ووضعه في المكان المناسب في القائمة التي تم فرزها.
  3. كرر الخطوة 2 لكل عنصر لاحق في القائمة التي لم يتم فرزها.
  4. قارن العنصر الحالي بالعناصر الموجودة في القائمة التي تم فرزها، بدءًا من العنصر الموجود على اليسار مباشرةً.
  5. قم بتبديل العنصرين إذا كان العنصر الحالي أصغر من العنصر الموجود على يساره.
  6. إذا كان العنصر الحالي أكبر من العنصر الموجود على يساره، فقم بإدراجه في موضعه الصحيح في القائمة التي تم فرزها.
  7. كرر الخطوات من 4 إلى 6 لكل عنصر لاحق في القائمة التي لم يتم فرزها.
  8. بمجرد معالجة جميع العناصر، ستحتوي القائمة التي تم فرزها على جميع العناصر بالترتيب الصحيح.
  9. اكتملت عملية الفرز.

(ثالثا) نوع الاختيار : طريقة فرز تبدأ القائمة المصنفة باستمرار بأصغر التفاصيل من القائمة غير المرتبة.

خوارزمية فرز التحديد هي: -

  1. ابدأ بتعيين العنصر الأساسي في القائمة باعتباره العنصر الأدنى.
  2. كرر ذلك عبر العناصر المتبقية في القائمة، وقارن كل منها بالحد الأدنى الحالي.
  3. قم بتعيين حد أدنى جديد إذا وجد أن العنصر أصغر من العنصر الموجود.
  4. قم بتغيير الحد الأدنى الحالي إلى العنصر الأول في القائمة عندما تصل إلى نهايتها.
  5. بالنسبة للجزء المتبقي غير المصنف من القائمة، كرر الخطوات من 2 إلى 4، ولكن ابدأ بالعنصر الثاني في القائمة (حيث أن العنصر الأول قد تم فرزه بالفعل).
  6. استمر في فرز القائمة بهذه الطريقة حتى يتم فرزها بالكامل.

(رابعا) الفرز السريع : خوارزمية فرز تسد تختار عنصرًا محوريًا وتقسم القائمة إلى قوائم فرعية اعتمادًا على ما إذا كانت العناصر أقل من المحور أو أكثر منه. بعد ذلك، يتم فرز القوائم الفرعية بشكل متكرر حتى يتم فرز القائمة الكاملة.

خوارزمية الفرز السريع هي:-

  1. اختر عنصرًا محوريًا من القائمة. عادةً ما يكون هذا هو العنصر الأول، ولكنه قد يكون أيضًا عنصرًا عشوائيًا أو وسيطًا للقائمة.
  2. قسّم القائمة إلى قائمتين فرعيتين: واحدة تحتوي على عناصر أقل من المحور وأخرى تحتوي على عناصر أكبر من المحور.
  3. قم بفرز القائمة الفرعية التي تحتوي على عناصر أقل من المحور بشكل متكرر باستخدام نفس العملية.
  4. استخدم نفس الإجراء لفرز القائمة الفرعية للإدخالات الأكبر من المحور بشكل متكرر.
  5. قم بتسلسل القوائم الفرعية التي تم فرزها مع العنصر المحوري بينهما لتشكيل قائمة مفروزة بالكامل.
  6. قم بإرجاع القائمة التي تم فرزها بالكامل.

(ت) يذهب القرعة : تقوم خوارزمية الفرز بتقسيم تسد بتقسيم القائمة إلى نصفين، وفرز كل نصف، ثم دمج النصفين بالترتيب المفرز.

خوارزمية الفرز بالدمج:

  1. أنشئ قائمتين فرعيتين من القائمة: واحدة تحتوي على عناصر أسفل المحور وأخرى تحتوي على عناصر أعلى المحور.
  2. يُنتج قائمة فرعية مفروزة جديدة عن طريق دمج القوائم الفرعية بشكل متكرر حتى توجد قائمة فرعية واحدة فقط. ستكون هذه القائمة التي تم فرزها.
  3. خطوات دمج مجلدين فرعيين:-
  4. قم بإنشاء قائمة فارغة للاحتفاظ بالعناصر التي تم فرزها.
  5. يقارن العنصر الأول من كل قائمة فرعية.
  6. إضافة العنصر الأصغر إلى القائمة الجديدة وإزالته من القائمة الفرعية الأصلية.
  7. كرر الخطوتين 2 و3 حتى تصبح القائمة فارغة تمامًا.
  8. لإضافة العناصر المتبقية من القوائم الفرعية الأخرى إلى قائمة جديدة.
  9. يستبدل القائمة الفرعية المدمجة بالقائمة المصنفة الجديدة.
  10. كرر هذه العملية حتى يتم دمج كافة القوائم الفرعية في قائمة واحدة مرتبة.

(السادس) نوع الكومة : خوارزمية فرز تقوم بفرز العناصر باستخدام بنية بيانات تسمى الكومة.

هذه هي خوارزمية التصنيف:

    بناء أقصى كومة: بدءًا من العقدة غير الورقية الأولى، قارن كل عقدة بالعقد التابعة لها واستبدل العقد بأكبر العقد التابعة لها لتلبية خاصية الحد الأقصى للكومة.مبادلة الجذر مع العنصر الأخير: قم بتبديل الجذر (العنصر الأكبر) بالعنصر الأخير في المكدس.
  1. كومة بقية العناصر. بدءًا من الجذر، تتم مقارنة كل عقدة مع أبنائها، ويتم تبادل العقد مع أبنائها الأكبر سنًا حتى يتم استيفاء خاصية الحد الأقصى للكومة.
  2. كرر الخطوتين 2 و3 مع العناصر المكدسة حديثًا، باستثناء العنصر الأخير في الموضع الصحيح.
  3. كرر هذه العملية حتى يبقى عنصر واحد فقط في المكدس. تم فرز هذا الآن.
  4. هيابيفي داون: بدءاً من العقدة الجذرية، تقوم بمقارنة العناصر مع العناصر التابعة لها وتتبادل مع العناصر الأكبر منها حتى يتم استيفاء خاصية الحد الأقصى للكومة.هيافي يصل: ابدأ بالعنصر الأخير في الكومة، وقارنه بالعنصر الأصلي، وقم بتبديله مع العنصر الأصلي لتلبية خاصية الحد الأقصى للكومة.

(السابع) نوع الجذر : خوارزمية فرز تقوم بفرز العناصر بناءً على أرقام أو أرقام تمثيلها الثنائي.

خوارزمية الفرز الجذري هي: -

  1. تحديد عدد الأرقام الموجودة في أكبر عنصر في قائمة الإدخال.
  2. قم بتهيئة متغير، مثل مكان الرقم، إلى 1، الذي يمثل مكان الرقم الحالي.
  3. قم بإنشاء قائمة فارغة لكل قيمة رقمية محتملة من 0 إلى 9.
  4. قم بالتكرار خلال قائمة الإدخال وأضف كل عنصر إلى القائمة المناسبة بناءً على قيمة مكان الرقم الحالي.
  5. قم بتسلسل جميع القوائم معًا لتكوين القائمة الجديدة حسب ترتيب القوائم الرقمية.
  6. اضرب رقم digitPlace في 10 للانتقال إلى مكان الرقم التالي.
  7. كرر الخطوات من 4 إلى 6 لكل مكان من الأرقام حتى يتم أخذ كافة الأرقام الموجودة في العنصر الأكبر في الاعتبار.
  8. سيتم فرز القائمة النهائية بترتيب تصاعدي حسب أرقام العناصر.
  9. إرجاع القائمة النهائية التي تم فرزها.

2. خوارزميات البحث

توفر لغة C أيضًا الأدوات اللازمة لتنفيذ مجموعة متنوعة من خوارزميات البحث، مثل البحث الخطي والبحث الثنائي. يمكن لهذه الخوارزميات العثور بسرعة على عناصر محددة في مجموعة بيانات، مما يجعلها مفيدة لمجموعة واسعة من التطبيقات.

هناك أنواع عديدة من خوارزميات البحث.

هم:-

(ط) البحث الخطي : خوارزمية بحث أساسية تقوم بفحص كل عنصر في القائمة واحدًا تلو الآخر حتى تجد العنصر المطلوب.

خوارزمية البحث الخطي:-

  1. تحديد مدخلات الخوارزمية: مدخلات خوارزمية البحث الخطي هي قائمة من العناصر (أو المصفوفة) والعنصر المستهدف الذي نبحث عنه.
  2. تهيئة متغير يسمى 'الفهرس' إلى -1: سيتم استخدام هذا المتغير لتخزين فهرس العنصر الهدف إذا تم العثور عليه.
  3. قم بالمراجعة عبر قائمة العناصر: بدءًا من العنصر الأول، تحقق من كل عنصر في القائمة واحدًا تلو الآخر.
  4. مقارنة العنصر الحالي بالعنصر المطلوب للتقييم: احتفظ بفهرس العنصر الحالي في متغير الفهرس واخرج من الحلقة إذا كان العنصر الحديث وعنصر الهدف متطابقين.
  5. إرجاع فهرس العنصر الهدف: بعد اكتمال الحلقة، قم بإرجاع القيمة المخزنة في متغير الفهرس. إذا لم يتم العثور على العنصر الهدف، ستكون قيمة الفهرس -1.

(2) البحث الثنائي : خوارزمية البحث التي تعمل عن طريق تقسيم القائمة إلى نصفين وعمليات البحث داخل تلك النصفين من المرجح أن تتضمن العنصر.

خوارزمية البحث الثنائي:-

  1. الإدخال: قائمة مرتبة من عناصر n والعنصر المستهدف x.
  2. تهيئة المتغيرات: اضبط المؤشر المنخفض على 0، والمؤشر المرتفع على n-1، والمتوسط ​​على (منخفض + مرتفع)/2.
  3. ابدأ حلقة: بينما يكون المؤشر المنخفض أقل من المؤشر المرتفع أو يساويه، كرر الخطوات التالية.
  4. قارن العنصر الأوسط بـ x: إذا كان العنصر الأوسط يساوي x، فقم بإرجاع الفهرس الأوسط.
  5. قم بتحديث الفهرس المنخفض أو المرتفع: إذا كان x أكبر من العنصر الأوسط، فاضبط الفهرس المنخفض على منتصف + 1. وإلا، فاضبط الفهرس المرتفع على منتصف - 1.
  6. تحديث مؤشر المنتصف: المنتصف = (منخفض+عالي)/2.
  7. نهاية الحلقة: إذا كان المؤشر المنخفض أكبر من المؤشر المرتفع، فإن x غير موجود في القائمة، وترجع الخوارزمية فشلاً.
  8. الإخراج: فهرس x في القائمة أو رسالة الفشل.

(ثالثا) البحث العمق الأول : خوارزمية بحث تقوم بفحص كل فرع قدر الإمكان قبل الرجوع إليه.

تنطبق الإرشادات التالية على بحث العمق أولاً:

  1. حدد قمة أو عقدة بداية الرسم البياني للبدء بها.
  2. أضف علامة زيارة إلى القمة الأولى.
  3. ضع قمة البداية مباشرة في المكدس.
  4. حتى تصبح المكدس فارغة، كرر الإجراءات التالية: -
    • قم بإزالة قمة المكدس العلوية.
    • قم بوضع علامة على أنها تمت زيارتها وأدخل في المكدس كل جار غير مرغوب فيه للقمة المنبثقة.
  5. استمر في هذه العملية حتى تتم زيارة جميع القمم في الرسم البياني.
  6. بمجرد زيارة جميع القمم، تكتمل الخوارزمية، ويتم إجراء بحث العمق أولاً على الرسم البياني.

(رابعا) بحث العرض الأول : خوارزمية بحث تستكشف جميع جيران العقدة قبل الانتقال إلى المستوى التالي.

خوارزمية البحث بالعرض الأول هي:-

طول المصفوفة جافا
  1. ابدأ بالعقدة الجذرية أو الحالة الأولية.
  2. أضف العقدة الجذرية إلى قائمة الانتظار.
  3. تحقق مما إذا كانت قائمة الانتظار فارغة؛ إذا كانت الإجابة بنعم، فقم بإنهاء الخوارزمية.
  4. خذ العنصر الأول من قائمة الانتظار وقم بوضع علامة عليه كمزار.
  5. قم بتضخيم العقدة المعاصرة عن طريق إضافة جميع العقد المجاورة لها التي لم تتم زيارتها إلى قائمة الانتظار.
  6. حتى يتم تحديد موقع العقدة المطلوبة أو حتى تصبح قائمة الانتظار فارغة، كرر الخطوات من 3 إلى 5.
  7. قم بإرجاع المسار من الحالة الأولية إلى الحالة المستهدفة إذا تم العثور على عقدة الهدف.
  8. قم بإنهاء مجموعة القواعد والإبلاغ عن عدم تحديد حالة الهدف إذا كانت قائمة الانتظار فارغة.

(ت) بحث الاستيفاء : خوارزمية بحث تستخدم قيم العناصر التي تم البحث عنها لتقدير موضعها في الفهرس.

من المهم أن يتم توزيع المصفوفة بالتساوي. خلاف ذلك، فهي خوارزمية.

إنه يعمل كما هو متوقع.

يمكن تلخيص الخوارزمية على النحو التالي.

  1. احصل على قائمة الإدخال والقيمة الأساسية للبحث.
  2. قم بتهيئة المتغيرات السفلية والعلوية في الفهارس الأول والأخير من القائمة.
  3. إذا كانت القيمة الدنيا أقل من أو تساوي القيمة الأعلى، فإن:-
    1. احسب الموقع المقدر باستخدام الصيغة التالية:
      pos = منخفض + ((مرتفع - منخفض) / (arr[عالى] - arr[منخفض])) * (x - arr[منخفض]).
    2. قم بإرجاع الموضع إذا كانت قيمة الموضع المقدرة قيمة أساسية.
    3. ج) إذا كانت قيمة الموضع المقدرة أقل من القيمة الرئيسية، فاضبطها على قيمة أقل.
      المنصب +1.
    4. د) إذا كانت قيمة الموضع المقدر أكبر من قيمة تعيين المفتاح، الموضع - 1 لأعلى.
  4. إذا لم يتم العثور على قيمة المفتاح، قم بإرجاع -1 للإشارة إلى أن القيمة غير موجودة في القائمة.

(السادس) الانتقال إلى البحث : طريقة بحث تتكرر عبر القائمة بخطوات ثابتة حتى تجد العنصر ذي الصلة أو تحدد أنه لم يعد موجودًا.

خوارزمية البحث السريع هي كما يلي:

  1. أولاً، قم بتعيين حجم القفزة على الجذر التربيعي لعدد عناصر المصفوفة.
  2. يضبط متغيرًا باسم 'الحالي' على العنصر الأول في المصفوفة.
  3. يتكرر فوق المصفوفة من خلال القفز حسب حجم القفزة أثناء زيادة متغير يسمى 'القفز'.
  4. انتقل إلى القفزة التالية إذا كان العنصر الموجود أصغر من العنصر المطلوب.
  5. إذا كان العنصر الحالي أكبر من العنصر الهدف، فقم بإجراء بحث خطي بين العنصر الحالي وعنصر الانتقال السابق للعثور على العنصر الهدف.
  6. إذا لم يتم العثور على العنصر الهدف في المصفوفة، فسيتم إرجاع -1 للإشارة إلى أنه غير موجود في المصفوفة.
  7. إذا تم العثور على العنصر، فإنه يقوم بإرجاع فهرس العنصر في المصفوفة.

3. خوارزميات الرسم البياني

إن دعم لغة C للمؤشرات وهياكل البيانات مثل المصفوفات والقوائم المرتبطة يجعلها مناسبة لتنفيذ الخوارزميات التي تتعامل مع الرسوم البيانية، مثل العثور على أقصر مسار بين عقدتين في الرسم البياني.

هناك أنواع مختلفة من خوارزميات الرسم البياني.

هم:-

    خوارزمية ديكسترا: خوارزمية تعثر على أقصر مسار بين عقدتين في الرسم البياني عن طريق التحديث المستمر لأقصر مسافة من كل عقدة.الخوارزمية أ*: طريقة تقوم باستمرار بتحديث أقصر مسار لكل عقدة في الرسم البياني لتحديد أقصر طريق بينهما.خوارزمية بريم: طريقة لمعرفة أصغر شجرة ممتدة في الرسم البياني المتصل الموزون.خوارزمية كروسكال: طريقة لتحديد الشجرة الممتدة الأدنى للرسم البياني الموزون المرتبط.خوارزمية بيلمان-فورد: خوارزمية تعرض أقصر مسار بين عقدة توريد معينة وكل عقدة أخرى في الشبكة، حتى عندما يكون للرسم البياني أوزان حافة سلبية.

4. خوارزميات التشفير

تدعم لغة C العمليات منخفضة المستوى ومعالجة البيانات بكفاءة، مما يجعلها مثالية لتنفيذ الخوارزميات المستخدمة في التشفير، مثل خوارزميات تشفير البيانات وفك التشفير.

هناك أنواع مختلفة من خوارزميات التشفير.

هم:-

    خوارزميات التجزئة: تنتج هذه الخوارزميات مخرجات ذات حجم ثابت (تجزئة) من مدخلات ذات حجم عشوائي. تشمل الأمثلة MD5 وSHA-1 وSHA-2.خوارزميات المفاتيح المتماثلة: تستخدم خطوات التشفير وفك التشفير في هذه الخوارزميات نفس المفتاح الخاص. تعتبر AES وDES وBlowfish بعض الأمثلة.خوارزميات المفاتيح غير المتماثلة: يتم استخدام المفتاح العام والمفتاح غير العام بواسطة تلك الطرق كمفاتيح منفصلة للتشفير وفك التشفير. تتضمن بعض الأمثلة RSA وECC وDSA.خوارزميات تبادل المفاتيح: تسمح هذه الخوارزميات لطرفين بتبادل المفاتيح عبر قناة غير آمنة بشكل آمن. على سبيل المثال، يمكننا أن نذكر ديفي هيلمان والمنحنى الإهليلجي ديفي هيلمان.

مزايا الخوارزمية

الخوارزميات لها العديد من المزايا.

هم:-

    السرعة والكفاءة: يمكن للخوارزميات معالجة كميات كبيرة من البيانات بسرعة ودقة، مما يجعلها مفيدة للمهام التي تستغرق وقتًا طويلاً جدًا أو المعرضة للأخطاء بحيث لا يستطيع الأشخاص القيام بها.تناسق: تتبع الخوارزميات مجموعة من الإرشادات المحددة مسبقًا. ويمكن أن يؤدي إلى نتائج متسقة دون أن يتأثر بالتحيزات والعواطف الشخصية.أتمتة: يمكن للخوارزميات أداء المهام تلقائيًا، مما يترك للأشخاص حرية التركيز على المهام الأكثر تعقيدًا أو إبداعًا.زيادة الدقة: يمكن للخوارزميات في كثير من الأحيان تحقيق مستويات أعلى من الدقة مقارنة بالبشر، خاصة عند التعامل مع كميات كبيرة من البيانات.اتخاذ قرارات أفضل: تساعدنا الخوارزميات على اتخاذ قرارات أكثر استنارة وموضوعية من خلال تحليل البيانات وتحديد الأنماط والاتجاهات التي لا يمكن للناس رؤيتها بسهولة.قابلية التوسع: يمكن توسيع نطاق الخوارزميات أو تقليلها بسهولة لتلبية المتطلبات وأعباء العمل المتغيرة.

عيوب الخوارزمية

الخوارزميات مفيدة جدًا للبرمجة، لكن الخوارزميات لها عيوب.

هم:-

    نطاق محدود: لا تستطيع الخوارزميات حل المشكلات إلا ضمن نطاقها وقد لا تكون قادرة على حل المشكلات المعقدة أو المجردة.تحيز: يمكن للخوارزميات أن تديم وتعزز التحيزات في البيانات المستخدمة للتدريب، مما يؤدي إلى نتائج غير عادلة.شفافية غير كافية: تخفي العديد من الخوارزميات العملية التي من خلالها يصلون إلى استنتاجاتهم. وهذا قد يجعل من الصعب التفكير في النتائج أو التحقق منها.الاعتماد على دقة البيانات:تعتمد صحة مجموعة القواعد بشكل كبير على دقة البيانات المستخدمة في التدريس وإمكانية تطبيقها. قد تكون التأثيرات غير الدقيقة أو غير الدقيقة نتيجة للبيانات الخاطئة.القدرة على التكيف المقيدة:تم تصميم الخوارزميات لاتباع الإرشادات ولن تتكيف مع الظروف والأحوال المتغيرة.