يدور علم الكمبيوتر حول فهم تعقيدات الخوارزميات وهياكل البيانات.
لديك قائمة بالعناصر التي تحتاج إلى الفرز ، لكن ليس لديك الوقت أو الموارد لاستخدام خوارزمية فرز أكثر تعقيدًا.
يعد فرز الإدراج أحد أبسط خوارزميات الفرز ، ولكنه قد يكون بطيئًا في القوائم الكبيرة.
سهل التنفيذ والفهم جعل هذه الطريقة مفضلة لدى المبرمجين. إنه مثالي للقوائم الصغيرة أو عندما تحتاج إلى حل سريع.
في منشور المدونة هذا ، سننظر في التعقيد الزمني لفرز الإدراج. تُستخدم هذه الخوارزمية لفرز المصفوفات ، ولها وقت تشغيل O (n2). هذا يعني أن تعقيد الوقت يزداد مع حجم المصفوفة.
ومع ذلك ، يمكن أن تكون هذه الخوارزمية أسرع في كثير من الأحيان من خوارزميات الفرز الأخرى ، مثل الفرز السريع.
دعونا نلقي نظرة فاحصة على كيفية عمل فرز الإدراج!
ما هي خوارزمية فرز الإدراج؟
عنصر واحد في كل مرة ، يُنشئ فرز الإدراج مصفوفة قابلة للفرز ، والتي يُطلق عليها كثيرًا اسم قائمة.
على سبيل المثال ، يتم تطبيق الفرز في برامج الكمبيوتر المعقدة مثل المجمعات ، حيث يكون ترتيب الرموز مهمًا لتفسير البرنامج.
كيف يعمل تصنيف الإدراج؟
عندما نستخدم فرز الإدراج لفرز مصفوفة ، تبدأ الخوارزمية بإيجاد أصغر عنصر في القائمة وإدراجه في الموضع الصحيح.
ثم يعثر على العنصر الأصغر التالي ويدرجه في الموضع الصحيح ، وهكذا.
تعمل الخوارزمية من خلال تكرار القائمة ، ومقارنة كل عنصر بالعنصر الذي يسبقه.
إذا كانت العناصر بالترتيب الخاطئ ، تقوم الخوارزمية بتبادلها. ثم يتحقق لمعرفة ما إذا كانت القائمة مرتبة ، وإذا كانت كذلك ، تنتهي الخوارزمية.
من الناحية العملية ، غالبًا ما يتم تنفيذ فرز الإدراج باستخدام بضعة أسطر من التعليمات البرمجية ، مما يجعلها خيارًا شائعًا لفرز المصفوفات الصغيرة. ومع ذلك ، يجب مراعاة تعقيد الوقت عند استخدام هذه الخوارزمية.
على سبيل المثال:
فيما يلي مثال على كيفية عمل فرز الإدراج. سوف نستخدم المصفوفة التالية:
1، 2، 3، 4، 5، 6
تبدأ الخوارزمية بإيجاد أصغر عنصر في القائمة ، وهو 1. ثم يقوم بإدراجه في الموضع الصحيح ، الموضع الأول. ثم يعثر على العنصر الأصغر التالي ، وهو 2. ويدرجه في الموضع الصحيح ، وهو الموضع الثاني.
ثم يعثر على العنصر الأصغر التالي ، وهو 3. ويدرجه في الموضع الصحيح ، وهو الموضع الثالث.
ثم يعثر على العنصر الأصغر التالي ، وهو 4. ويدرجه في الموضع الصحيح ، وهو الموضع الرابع ، وهكذا. تم فرز القائمة الآن!
يمكننا أن نرى من المثال أن الخوارزمية تأخذ ستة مقارنات وتبادلات لفرز القائمة. هذا لأنه يأخذ n2 مقارنات ومقايضات لفرز قائمة بالعناصر n. في هذه الحالة ، ن = 6.
كيفية تحسين الإدراج الوقت تعقيد؟
بينما يكون لفرز الإدراج وقت تشغيل O (n2) ، يمكن تحسينه باستخدام خوارزمية فرز أفضل ، مثل الترتيب السريع.
Quicksort لديه وقت تشغيل O (n log n) ، وهو أسرع بكثير من O (n2).
ومع ذلك ، في بعض الحالات ، يمكن أن يكون فرز الإدراج أسرع من الترتيب السريع.
على سبيل المثال ، إذا كانت القائمة مرتبة بالفعل ، فسيستغرق فرز الإدراج وقتًا أقل من الترتيب السريع.
من الناحية العملية ، غالبًا ما يتم تنفيذ فرز الإدراج باستخدام بضعة أسطر من التعليمات البرمجية ، مما يجعلها خيارًا شائعًا لفرز المصفوفات الصغيرة.
ومع ذلك ، يجب مراعاة تعقيد الوقت عند استخدام هذه الخوارزمية.
تعقيدات الوقت
أسوأ حالة تعقيد O (n2):
يزداد تعقيد الوقت مع زيادة حجم المصفوفة. يستغرق ن2 مقارنات ومقايضات لفرز قائمة بالعناصر n.
على سبيل المثال ، إذا كان لدينا مصفوفة بحجم 1000 ، فستأخذ الخوارزمية 1,000,000 مقارنة ومقايضات لفرز المصفوفة.
أفضل حالة تعقيد O (n):
التعقيد الزمني هو نفس حجم مصفوفة الإدخال. أنا
يأخذ t مقارنات ومقايضات لفرز قائمة بـ n من العناصر. على سبيل المثال ، ضع في اعتبارك مصفوفة بالحجم 5. ستأخذ الخوارزمية خمس مقارنات ومقايضات لفرز المصفوفة.
متوسط تعقيد الحالة O (n2):
التعقيد الزمني بين التعقيدات الأسوأ والأفضل في هذه الحالة.
يستغرق ن2 مقارنات ومقايضات لفرز قائمة بالعناصر n.
وبالتالي ، يعد فرز الإدراج خوارزمية فرز مستقرة.
لماذا يعتبر تصنيف الإدراج مستقرًا؟
يعتبر فرز الإدراج مستقرًا لأنه يحافظ على ترتيب العناصر المتساوية في مصفوفة الإدخال.
هذا مهم للعديد من التطبيقات ، مثل استرداد البيانات أو التحليل المالي. على سبيل المثال ، إذا كان لدينا قائمتين من الأرقام وأردنا المقارنة بينهما ، فعلينا التأكد من الحفاظ على ترتيب العناصر.
إذا لم يتم فرز القوائم ، فلن نقارن بينها بدقة.
اترك تعليق