مقدمة في خوارزمية فرز الإدراج

مقدمة في خوارزمية فرز الإدراج

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





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





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





نظرة فاحصة على ترتيب الإدراج

قد لا يكون الوصف أعلاه منطقيًا بالنسبة لك. يجب أن يساعدك مثال على فهم أفضل بكثير.

افترض أن لديك قائمة: [39 ، 6 ، 2 ، 51 ، 30 ، 42 ، 7].



تحدد الخوارزمية 39 كأول قيمة للقائمة الفرعية المصنفة. ثم ينتقل التقييم إلى المركز الثاني.

الموضوعات ذات الصلة: البرمجة الديناميكية: الأمثلة والمشكلات الشائعة والحلول





ثم تتم مقارنة 6 بـ 39. نظرًا لأن 6 أقل من 39 ، يتم إدخال 6 في الموضع الأول و 39 في الموضع الثاني. ترتيب القائمة الجديد بعد المرور الأول هو الآن:

[6 ، 39 ، 2 ، 51 ، 30 ، 42 ، 7]





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

[2 ، 6 ، 39 ، 51 ، 30 ، 42 ، 7]

بالنسبة للمرور الثالث ، يكون ترتيب القائمة هو:

[2 ، 6 ، 39 ، 51 ، 30 ، 42 ، 7]

تتكرر العملية حتى يتم فرز القائمة بأكملها.

انظر إلى الرسم البياني أدناه الذي يلخص هذه العمليات:

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

التعقيد الزمني لفرز الإدراج هو O (n2)، تماما مثل فقاعة الفرز . عدد المقارنات في السيناريو الأسوأ هو مجموع كل الأعداد الصحيحة من 1 إلى (ن -1) ، مما يعطي مجموعًا تربيعيًا.

تنفيذ التعليمات البرمجية

يوضح كود Python و Java أدناه كيف يمكنك تنفيذ طريقة Insertion Sort.

بايثون:

def insertionSort(mylist):
for step in range(1, len(mylist)):
current_element = mylist[step]
position = step
while position > 0 and mylist[position - 1] > current_element:
mylist[position] = mylist[position - 1]
position = position - 1
mylist[position] = current_element

جافا:

void insertionSort(int[] myarray) {
int n = myarray.length;
for (int x = 1; x int key = myarray[x];
int y = x-1;
while ( (y > -1) && ( myarray [y] > key ) ) {
myarray [y+1] = myarray [y];
y--;
}
myarray[y+1] = key;
}
}

ترميز أفضل باستخدام الكود الكاذب

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

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

يشارك يشارك سقسقة بريد الالكتروني ما هو Pseudocode وكيف يجعلك مطورًا أفضل؟

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

اقرأ التالي
مواضيع ذات صلة
  • برمجة
  • جافا
  • بايثون
  • دروس الترميز
نبذة عن الكاتب جيروم ديفيدسون(تم نشر 22 مقالة)

جيروم كاتب في MakeUseOf. يغطي مقالات عن البرمجة و Linux. إنه أيضًا متحمس للعملات المشفرة ويحتفظ دائمًا بعلامات تبويب في صناعة التشفير.

كيفية استخدام برنامج مشاهدة نتفليكس
المزيد من Jerome Davidson

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك