شرح الخوارزميات - ما هي وخوارزميات الفرز الشائعة

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

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

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

غالبًا ما تقترن الخوارزميات بهياكل البيانات ، على الرغم من اختلافها جوهريًا. هياكل البيانات هي طرق لتخزين البيانات بحيث يمكن للخوارزمية إجراء العمليات عليها بسهولة.

بعض الأمثلة الشائعة لهياكل البيانات هي المصفوفات والمكدسات وقوائم الانتظار والقوائم المرتبطة والأشجار والرسوم البيانية وجداول التجزئة والأكوام.

كفاءة

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

تدوين Big O هو طريقة لوصف سرعة أو تعقيد خوارزمية ، ويظهر أسوأ عدد من العمليات لحجم إدخال معين. من المهم فهم وقت التشغيل المحتمل لخوارزميات مختلفة ، خاصة عند العمل مع مجموعات بيانات كبيرة أو متزايدة. يجعل تدوين Big O من السهل اختيار الخوارزمية المناسبة لكل مهمة.

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

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

فرز سريع

لا تكتمل مناقشة الفرز بدون ذكر الفرز السريع.

دمج الفرز

تعتمد خوارزمية دمج الفرز على تقسيم وفرز المصفوفات الأصغر قبل دمجها في مصفوفة مرتبة واحدة.

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