كيفية تنفيذ فرز التحديد في C؟

نشرت: 2023-01-06

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

جدول المحتويات

مثال على فرز التحديد في C

إذا أخذنا مصفوفة بأرقام [10،2،8،4،6] أصغر عدد فيها هو 2. وهكذا ، سنضع أصغر رقم ، وهو 2 ، في الموضع الأول ، وبعد ذلك ستظهر المصفوفة مثل [2،10،8،4،6]. بعد ذلك ، سنأخذ أصغر رقم تالي لأن الرقم 2 في موضعه الصحيح الآن. الرقم الأصغر التالي هو 4 ، والذي سيتم وضعه في الموضع الثاني ، وبعد ذلك سيتم البحث عن المصفوفة بشكل مشابه حتى يتم فرزها في النهاية.

يقوم فرز التحديد في C بفرز الأرقام بترتيب تصاعدي. من خلال تعديل الخوارزمية ، يمكن ترتيب الأرقام في ترتيب تحديد تنازلي يمكن أيضًا إجراؤها بلغات أخرى بخلاف لغة C ، مثل Selection Sort C ++ أو Selection Sort Python.

تعلم دورات تطوير البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

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

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

الدورات والمقالات الشعبية في هندسة البرمجيات

البرامج الشعبية
برنامج PG التنفيذي في تطوير البرمجيات - IIIT ب برنامج شهادة Blockchain - PURDUE برنامج شهادة الأمن السيبراني - PURDUE ماجستير في علوم الكمبيوتر - IIIT ب
مقالات شعبية أخرى
راتب Cloud Engineer في الولايات المتحدة 2021-22 راتب AWS Solution Architect في الولايات المتحدة راتب المطور الخلفي في الولايات المتحدة راتب المطور الأمامي في الولايات المتحدة
راتب مطور الويب في الولايات المتحدة الأمريكية أسئلة مقابلة Scrum Master في عام 2022 كيف تبدأ مهنة في الأمن السيبراني في عام 2022؟ الخيارات المهنية في الولايات المتحدة لطلاب الهندسة

سيساعد المثال التالي مع كل تكرار في فهم عملية فرز الاختيار في C بالتفصيل-

التكرار # 1

أنا [] = 8،5،2،6،4

ضع حدًا أدنى - 8

قارن i 0 و i 1

على النحو التالي ، i 0 > i 1 ، اضبط الحد الأدنى = 5.

  • قارن i 1 و i 2

كما ، i 1 > i 2 ، اضبط الحد الأدنى = 2.

  • قارن i 2 و i 3

كما ، i 2 <i 3 ، اضبط الحد الأدنى = 2.

  • قارن i 2 و i 4

كما ، i 2 <i 4 ، اضبط الحد الأدنى = 2.

2 هو أصغر عدد من بين جميع العناصر ، يجب أن نبدل i 0 و i 2

­ التكرار # 2

أنا [] = 2،5،8،6،4

تعيين الحد الأدنى 5

  • قارن i 1 و i 2

كما ، i 1 <i 2 ، اضبط الحد الأدنى = 5.

  • قارن i 1 و i 3

بما أن i 1 <i 3 ، اضبط الحد الأدنى = 5

  • قارن أنا 1 وأنا 4

مرة أخرى ، أنا 1 <أنا 4 ، حدد الحد الأدنى = 4.

4 هو أصغر عنصر في المصفوفة ، لذلك يجب تبديل i 1 و i 4 .

التكرار # 3

أنا [] = 2،4،8،6،5

تعيين الحد الأدنى 8

  • قارن i 2 و i 3

كما ، i 2 > i 3 ، اضبط الحد الأدنى = 6.

  • قارن i 3 و i 4

كما ، i 3 > i 4 ، اضبط الحد الأدنى = 5.

5 هو أصغر عنصر في المصفوفة ، يجب عليك تبديل i 2 و i 4 .

التكرار # 4

أنا [] = 2،4،5،6،8

تعيين الحد الأدنى 6

  • قارن i 3 و i 4

بما أن i 3 <i 4 ، اضبط الحد الأدنى = 6.

يتم وضع الحد الأدنى في المكان الصحيح ؛ وبالتالي ، لن يحدث أي مبادلة.

مثال فرز التحديد في C

// اختيار الفرز في C

# تضمين <stdio.h>

// وظيفة لتبديل موضع عنصرين

مبادلة باطلة (int * a، int * b) {

كثافة العمليات = * أ ؛

* أ = * ب ؛

* ب = درجة الحرارة ؛

}

اختيار باطل فرز (مجموعة int [] ، حجم int) {

لـ (int step = 0؛ step <size - 1؛ step ++) {

int min_idx = خطوة ؛

لـ (int i = step + 1؛ i <size؛ i ++) {

// للفرز بترتيب تنازلي ، غيّر> إلى <في هذا السطر.

// حدد الحد الأدنى للعنصر في كل حلقة.

إذا (صفيف [i] <مصفوفة [min_idx])

min_idx = أنا ؛

}

// ضع دقيقة في الموضع الصحيح

مبادلة (& صفيف [min_idx] ، & مصفوفة [خطوة]) ؛

}

}

// وظيفة لطباعة مجموعة

printArray باطل (مصفوفة int [] ، حجم int) {

لـ (int i = 0 ؛ i <size ؛ ++ i) {

printf ("٪ d" ، صفيف [i]) ؛

}

printf ("\ n") ؛

}

// كود السائق

انت مين() {

بيانات int [] = {20، 12، 10، 15، 2} ؛

حجم int = sizeof (البيانات) / sizeof (البيانات [0]) ؛

اختيار فرز (البيانات والحجم) ؛

printf ("مصفوفة مرتبة بترتيب Acsending: \ n")؛

printArray (البيانات والحجم) ؛

}

تحليل التعقيد لفرز التحديد

المدخلات - ن عناصر الإدخال معطاة.

الإخراج - عدد الخطوات المطلوبة لفرز القائمة.

المنطق - إذا حصلنا على عدد n من العناصر ، فسيتم إجراء مقارنات n-1 في التمرير الأول ، ومقارنات n-2 في التمرير الثاني ، ومقارنات n-3 في المرور الثالث ، وما إلى ذلك. وبالتالي ، يمكن حساب العدد الإجمالي للمقارنات باستخدام ؛

انتاج -

(ن + 1) + (ن + 2) + (ن + 3) + (ن + 4) +…. +1

Sum = n (n-1) / 2 ie، O (n²)

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

اختيار فرز الوقت تحليل تعقيد

أفضل حالة: بالنسبة للمصفوفة التي تم فرزها مسبقًا ، فإن طريقة فرز التحديد لها تعقيد زمني أفضل حالة من O (n²).

متوسط ​​الحالة: تحتوي خوارزمية فرز التحديد على تعقيد متوسط ​​الوقت للحالة O (n²) عندما يتم ترتيب العناصر مختلطة ، أي ليس بترتيب تصاعدي ولا بترتيب تنازلي.

أسوأ حالة: عندما نعكس الترتيب التنازلي لمصفوفة ما إلى ترتيبها التصاعدي ، فإن أسوأ حالة تعقيد زمني هي O (n²).

التعقيد الزمني لطريقة فرز الاختيار هو O (n²) في كل من السيناريوهات الثلاثة. هذا يرجع إلى حقيقة أنه يجب علينا تحديد العناصر الدنيا العارية لكل مرحلة من أجل ترتيبها بشكل صحيح. بعد تتبع المصفوفة بأكملها ، سنكون قد وجدنا أدنى عنصر لدينا.

استنتاج

يؤدي هذا إلى إنهاء منشور المدونة حول "Selection Sort In C". يجب أن تفهم أنه يمكن إجراؤها بلغات أخرى أيضًا ، مثل Selection Sort C ++ و Selection Sort Python. نأمل أن تساعدك هذه المقالة في فهم كيفية فرز العناصر في C.

فرز التحديد ليس هو الجزء الوحيد في رحلة أن تصبح مبرمجًا. إذا كنت تأمل في الحصول على دعم كبير لمسيرتك المهنية في تطوير البرمجيات بدرجة مهنية ، فإن upGrad هنا! تطوير الواجهة الأمامية لشركة upGrad (JavaScript و HTML و CSS) والخلفية (NoSQL-MongoDB) والخدمات المصغرة ، ثم يمكنك متابعة دورة UpGrad's Master of Science in Computer Science. هذه الدورة التي تقدمها IIIT Bangalore و LJMU Alumni Status ، تساعدك على الوصول إلى حياتك المهنية كمهندس برمجيات / مطور متكامل مع عمالقة التكنولوجيا في جميع أنحاء العالم.

تغطي هذه الدورة المعرفة الأساسية لأدوات مثل Java و Spring و Hibernate ، مما يعزز مهاراتنا التنموية الكاملة لاستكشاف سوق العمل بفرص رائعة.

اشترك لمعرفة المزيد!

ماذا يعني فرز الاختيار في هياكل البيانات؟

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

ما هو الفرز السريع في C؟

تعتمد خوارزمية الفرز المعروفة باسم Quicksort على استراتيجية فرق تسد. يتم تقسيم المصفوفة إلى مصفوفات فرعية (عنصر محدد من المصفوفة) عن طريق اختيار عنصر محوري.

ما هو الاختيار ثنائي الاتجاه في C؟

عند وجود مجموعتين من العبارات - مجموعة واحدة عندما يكون الشرط المنطقي صحيحًا ومجموعة أخرى عندما تكون خاطئة - يُعرف هذا بالتحديد ثنائي الاتجاه (if / else).