مقدمة عن خوارزمية الفرز بالإدراج
خوارزمية الفرز بالإدراج هي واحدة من الخوارزميات الأساسية المستخدمة في تنظيم وترتيب البيانات. تعتبر هذه الخوارزمية بسيطة وسهلة الفهم، حيث تعتمد على فكرة بناء قائمة مرتبة بشكل تدريجي من خلال إضافة العناصر واحدًا تلو الآخر. تبدأ العملية بالعنصر الأول وتعتبره مُرتبًا، ثم يتم إدراج كل عنصر تالي في موضعه الصحيح بالنسبة للعناصر السابقة. تتميز خوارزمية الفرز بالإدراج بكونها فعّالة عند التعامل مع مجموعات بيانات صغيرة أو شبه مرتبة، حيث تعمل بشكل جيد في تحسين الترتيب الحالي.
كيفية تنفيذ الفرز بالإدراج في بايثون
لتنفيذ خوارزمية الفرز بالإدراج في بايثون، نبدأ بإنشاء دالة تأخذ قائمة من الأرقام كمدخل. نقوم بتكرار العناصر ابتداءً من العنصر الثاني، ثم نحاول إدراج كل عنصر في موقعه الصحيح بالنسبة للعناصر السابقة. يتم تنفيذ ذلك عن طريق مقارنة العنصر الحالي مع العناصر السابقة وتحريكه إلى اليسار حتى نجد الموقع المناسب له. إليك مثال يوضح كيفية تنفيذ هذه الخوارزمية:
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and key < arr[j]:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
# مثال على استخدام الفرز بالإدراج
numbers = [34, 2, 10, -9, 7]
insertion_sort(numbers)
print("القائمة المرتبة:", numbers)
أمثلة إضافية وتطبيقات عملية
يمكن استخدام الفرز بالإدراج في العديد من السيناريوهات العملية، خاصة عندما تكون مجموعة البيانات صغيرة أو شبه مرتبة. على سبيل المثال، يمكن استخدام هذه الخوارزمية لترتيب قائمة من الدرجات أو الأسماء في إطار صغير من البيانات. في حالة ترتيب أسماء الطلاب بناءً على درجاتهم، يمكننا استخدام نفس الخوارزمية مع تعديلات بسيطة للتعامل مع القوائم الثنائية الأبعاد. فيما يلي مثال يوضح كيفية تطبيق الفرز بالإدراج على قائمة من القوائم:
students = [("Ahmed", 75), ("Sara", 85), ("Youssef", 65), ("Laila", 90)]
def insertion_sort_students(students):
for i in range(1, len(students)):
key = students[i]
j = i - 1
while j >= 0 and key[1] < students[j][1]:
students[j + 1] = students[j]
j -= 1
students[j + 1] = key
insertion_sort_students(students)
print("الطلاب المرتبون حسب الدرجات:", students)
تظهر هذه الأمثلة كيف يمكن تطبيق خوارزمية الفرز بالإدراج بطرق مختلفة لتلبية الاحتياجات المتنوعة. على الرغم من بساطتها، إلا أنها تقدم حلولًا فعالة لمشاكل الفرز في العديد من الحالات.
