الانتقال إلى المحتوى الرئيسي

كيفية فرز مجموعة ثنائية الأبعاد: طرق فعالة لفرز في فب

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

الطريقة الأولى وربما الأسهل للفرز هي استخدام وظيفة الفرز المضمنة (). يسمح لك بفرز قيم الصفيف بترتيب تصاعدي ، لكنه لا يأخذ في الاعتبار المفاتيح. لذلك ، قبل الفرز ، من الضروري حفظ المفاتيح في مصفوفة منفصلة ، وفرز القيم واستعادة الاتصال بالمفاتيح.

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

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

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

  1. لماذا تحتاج مجموعة ثنائية الأبعاد ليتم فرزها?
  2. مزايا مصفوفة ثنائية الأبعاد مرتبة
  3. كيفية فرز مجموعة ثنائية الأبعاد في بي إتش بي?
  4. الطريقة 1: فرز حسب عمود معين
  5. الطريقة 2: الفرز حسب أعمدة متعددة
  6. الطريقة 3: الفرز باستخدام وظيفة المقارنة
  7. سؤال وجواب
  8. كيف أقوم بفرز مصفوفة ثنائية الأبعاد حسب حقل" الاسم"?
  9. كيف أقوم بفرز مصفوفة ثنائية الأبعاد عبر حقول متعددة?
  10. كيف يمكنني فرز مجموعة ثنائية الأبعاد في ترتيب عكسي?

لماذا يجب فرز مجموعة ثنائية الأبعاد?

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

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

مزايا فرز مصفوفة ثنائية الأبعاد:

  1. راحة العمل مع البيانات: تتيح لك المصفوفة المصنفة البحث عن البيانات وتصفيتها وتحليلها باستخدام خوارزميات أكثر كفاءة.
  2. تحسين قابلية قراءة البيانات: يسهل على الشخص إدراك المصفوفة المصنفة ، حيث يتم ترتيب البيانات بطريقة منظمة.
  3. تبسيط عمليات المقارنة: يسهل الفرز مقارنة القيم فيما بينها وإجراء عمليات المقارنة على العناصر المصنفة.

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

مزايا مصفوفة ثنائية الأبعاد مرتبة

المصفوفة ثنائية الأبعاد المصنفة هي مصفوفة يتم فيها ترتيب العناصر بالترتيب المحدد عن طريق الفرز. لديها العديد من المزايا على مجموعة لم يتم فرزها:

  1. راحة البحث

    في المصفوفة المصنفة ، يكون البحث عن العناصر أسرع بكثير. نظرا لترتيب العناصر ، يمكن استخدام البحث الثنائي أو الخوارزميات الفعالة الأخرى ، مما يقلل بشكل كبير من الوقت اللازم للعثور على المعلومات الضرورية.

  2. سهولة معالجة البيانات

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

  3. سهلة القراءة وتصور

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

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

كيفية فرز مجموعة ثنائية الأبعاد في بي إتش بي?

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

. تتيح لك هذه الوظيفة تحديد وظيفة المقارنة الخاصة بك لفرز عناصر المصفوفة.

:

matrix مصفوفة = [

[3, 7, 2],

[1, 5, 9],

[4, 8, 6]

];

مصفوفة ، وظيفة (a أ ، b ب) {

العودة a أ [0] - b ب [0];

});

الطباعة (matrix مصفوفة);

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

صفيف

(

[0] = > صفيف

(

[0] => 1

[1] => 5

[2] => 9

)

[1] = > صفيف

(

[0] => 3

[1] => 7

[2] => 2

)

[2] = > صفيف

(

[0] => 4

[1] => 8

[2] => 6

)

)

إذا كنت بحاجة إلى فرز مصفوفة ثنائية الأبعاد بترتيب تنازلي ، فيمكنك تبديل $أ و b ب في وظيفة المقارنة:

مصفوفة ، وظيفة (a أ ، b ب) {

العودة b ب [0] - a أ [0];

});

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

، والتي تسمح لك بتحديد وظائف المقارنة الخاصة بك لفرز المصفوفات الترابطية حسب القيم والمفاتيح ، على التوالي.

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

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

الطريقة 1: فرز حسب عمود معين

واحدة من أبسط الطرق وأكثرها فعالية لفرز صفيف ثنائي الأبعاد في فب هو الفرز حسب عمود معين. دعونا معرفة كيفية القيام بذلك.

1. إنشاء صفيف ثنائي الأبعاد لفرز. على سبيل المثال:

students الطلاب = صفيف(

صفيف ('اسم' = > 'إيفان' ، 'العمر' = > 25),

صفيف ('اسم' = > 'أليكسي' ، 'العمر' = > 22),

مجموعة ('اسم' = > 'ماريا' ، 'العمر' = > 24),

صفيف ('اسم' = > 'ايلينا' ، 'العمر' = > 23),

);

2. اكتب وظيفة تقوم بفرز المصفوفة حسب العمود المحدد. على سبيل المثال ، للفرز حسب العمود 'العمر' ، يمكنك استخدام الدالة:

وظيفة سورتبيكولومن(array صفيف ، column العمود)

{

يوسورت (array صفيف ، وظيفة (it البند 1 ، it البند 2) استخدام (column العمود) {

العودة it البند 1 [column العمود] it البند 2 [column العمود];

});

عودة array صفيف;

}

3. استدعاء وظيفة سورتبيكولومن () وتمريرها صفيف لفرز واسم العمود لفرز من قبل. على سبيل المثال:

- فرز الطلاب = فرز العمود (- الطلاب ، 'العمر');

4. الآن سيحتوي متغيرort سورتيدستودينتس على مصفوفة مرتبة حسب عمود 'العمر'. يمكنك عرضه على الشاشة باستخدام حلقة فوريش أو أي طريقة أخرى مريحة:

لكل (ort فرز الطلاب كما student طالب) {

';

}

لذلك سوف تحصل على مجموعة مرتبة حسب عمر الطلاب:

  • الاسم: أليكسي ، العمر: 22
  • الاسم: إيلينا ، العمر: 23
  • الاسم: ماريا ، العمر: 24
  • الاسم: إيفان ، العمر: 25

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

الطريقة 2: الفرز حسب أعمدة متعددة

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

لتنفيذ الفرز متعدد المستويات ، يمكنك استخدام وظيفة أورت (). يسمح لك بتعيين وظيفة مخصصة لمقارنة عناصر المصفوفة.

مثال على الكود:

"'بي إتش بي

وظيفة مولتيسورت (array صفيف ، keys مفاتيح){

مجموعة ، وظيفة (a أ ، b ب) استخدام (keys مفاتيح) {

count العد = العد (keys مفاتيح);

ل (i أنا = 0 ؛ i أنا < count العد ؛ i أنا i) {

key مفتاح = keys مفاتيح [i أنا];

إذا (key أ [key مفتاح] = = b ب [key مفتاح]) {

تابع;

}

عودة (a أ [key مفتاح] < b ب [key مفتاح])? -1 : 1;

}

العودة 0;

});

عودة array صفيف;

}

students الطلاب = [

['اسم' = > 'Иван' ، 'اللقب' = > ''' ، 'العمر' = > 20],

['اسم' = > ''' ، 'اللقب' = >' '' ، 'العمر' = > 18],

['اسم' = > ''' ، 'اللقب' = > ''' ، 'العمر' = > 19],

];

- فرز الطلاب = متعدد الفئات (- الطلاب ،['اللقب' ، 'الاسم']);

لكل (ort فرز الطلاب كما student طالب) {

طالب ['اللقب']. ‘ ‘ . طالب ['اسم']. ‘ ‘ . طالب ['العمر']. ‘

}

«`

نتيجة لتنفيذ هذا الرمز ، سوف نحصل على مجموعة مرتبة من الطلاب حسب الاسم الأخير والاسم الأول:

  • إيفانوف بيتر 19
  • بتروف إيفان 20
  • سيدوروف أليكسي 18

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

الطريقة 3: الفرز باستخدام وظيفة المقارنة

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

تتمثل ميزة استخدام وظيفة المقارنة في أنها تسمح لنا بتحديد قواعد الفرز الخاصة بنا اعتمادا على متطلبات المهمة. على سبيل المثال ، يمكننا فرز عناصر المصفوفة بترتيب تصاعدي أو تنازلي ، أو استبعاد العناصر المكررة ، أو النظر في قيم معينة فقط.

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

مثال على استخدام دالة المقارنة لفرز مصفوفة ثنائية الأبعاد:

// المصفوفة الأصلية ثنائية الأبعاد

array صفيف = [

['اسم' = > ' جون ' ، 'العمر' = > 25],

['اسم' = > 'مريم' ، 'العمر' = > 30],

['اسم' = > ' بوب ' ، 'العمر' = > 20]

];

// وظيفة المقارنة للفرز حسب العمر

وظيفة المقارنة (a أ ، b ب) {

العودة a أ ['العمر'] - b ب ['العمر'];

}

// فرز مصفوفة باستخدام دالة المقارنة

مجموعة ، 'مقارنة');

// إخراج المصفوفة المصنفة

فوريش (array صفيف كما item البند) {

';

}

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

  1. بوب — 20
  2. جون-25
  3. ماري-30

في هذا المثال ، مقارنة دالة المقارنة يقارن عناصر المصفوفة حسب العمر (حقل" العمر") ويحدد ترتيبها نتيجة الفرز. تطبق وظيفة الفرز وظيفة مقارنة على كل زوج من عناصر الصفيف وفرزها.

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

سؤال وجواب

كيف أقوم بفرز مصفوفة ثنائية الأبعاد حسب حقل" الاسم"?

يمكنك استخدام وظيفة أورت () وتمرير وظيفة مقارنة مخصصة من شأنها أن تقارن عناصر الصفيف من قبل حقل" الاسم". على سبيل المثال:

كيف أقوم بفرز مصفوفة ثنائية الأبعاد عبر حقول متعددة?

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

كيف يمكنني فرز مجموعة ثنائية الأبعاد في ترتيب عكسي?

إذا كنت بحاجة إلى فرز مصفوفة ثنائية الأبعاد بترتيب عكسي ، فيمكنك استخدام وظيفة الصف_العكس (). على سبيل المثال: