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

ابحث عن الحد الأدنى والحد الأقصى لعناصر المصفوفة مع فهارسها: كيفية كتابة برنامج

  • لينا الخطيب بني جماعة الكناني
  • الأسئلة

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

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

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

  1. ابحث عن الحد الأدنى والحد الأقصى لعناصر المصفوفة
  2. برنامج لإيجاد الحد الأدنى والحد الأقصى للعناصر
  3. نهج لإيجاد الحد الأدنى والحد الأقصى لعناصر المصفوفة
  4. البحث الخطي
  5. خوارزمية ديكسترا
  6. الفرز والفهرسة
  7. التحولات الرياضية
  8. استخدام الحلقات في البرنامج
  9. خوارزمية لإيجاد الحد الأدنى والحد الأقصى للعناصر
  10. تعقيد الخوارزمية
  11. مثال على برنامج لإيجاد الحد الأدنى والحد الأقصى للعناصر
  12. سؤال وجواب
  13. ما هي الخوارزمية التي يمكن استخدامها للعثور على الحد الأدنى والحد الأقصى لعناصر المصفوفة?
  14. كيف أذهب من خلال جميع عناصر المصفوفة عند البحث عن الحد الأدنى والحد الأقصى للعناصر?
  15. ما هي الإجراءات التي يجب تنفيذها إذا كانت المصفوفة فارغة?
  16. هل من الممكن استخدام وظائف لحل هذه المشكلة?
  17. ما هو تعقيد الخوارزمية لإيجاد الحد الأدنى والحد الأقصى لعناصر المصفوفة?

ابحث عن الحد الأدنى والحد الأقصى لعناصر المصفوفة

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

الخوارزمية لإيجاد الحد الأدنى للعنصر في المصفوفة:

  1. قيمة العنصر الأول من المصفوفة.
  2. .
  3. .
  4. وسوف تحتوي على الحد الأدنى من عنصر المصفوفة.

ويتم إجراء مقارنة بين العناصر لأكثر من ذلك ، وليس أقل.

Пример реализации алгоритма поиска минимального и максимального элементов матрицы на языке программирования:

matrix = [

[5, 3, 6],

[2, 8, 1],

[7, 4, 9]

]

minElement = matrix[0][0]

maxElement = matrix[0][0]

for i in range(len(matrix)):

for j in range(len(matrix[i])):

if matrix[i][j] < minElement:

minElement = matrix[i][j]

if matrix[i][j] > maxElement:

maxElement = matrix[i][j]

print("Минимальный элемент:", minElement)

print("Максимальный элемент:", maxElement)

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

الحد الأدنى للعنصر: 1

الحد الأقصى للعنصر: 9

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

برنامج لإيجاد الحد الأدنى والحد الأقصى للعناصر

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

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

ديف فيند_مين_ماكس (مصفوفة):

مين_عنصر = مصفوفة [0] [0]

ماكس _عنصر = مصفوفة [0] [0]

مؤشر الحد الأدنى = (0 ، 0)

ماكس _ مؤشر = (0 ، 0)

لأني في النطاق (لين (مصفوفة)):

إلى عن على ي في النطاق (لين (مصفوفة [أنا])):

إذا مصفوفة [أنا] [ي] < دقيقة _ عنصر:

min_element = matrix[i][j]

min_index = (i, j)

if matrix[i][j] > max_element:

max_element = matrix[i][j]

max_index = (i, j)

return min_element, min_index, max_element, max_index

Затем, можно создать функцию для вывода результатов на экран:

def print_results(matrix, min_element, min_index, max_element, max_index):

print("Матрица:")

for row in matrix:

print("\t".join(map(str, row)))

print(f"Минимальный элемент: {min_element}, индекс: {min_index}")

print(f"Максимальный элемент: {max_element}, индекс: {max_index}")

И, наконец, основную часть программы, где мы создаем матрицу и вызываем функции нахождения и вывода результатов:

matrix = [[4, 7, 2],

[6, 9, 1],

[3, 5, 8]]

min_element, min_index, max_element, max_index = find_min_max(matrix)

print_results(matrix, min_element, min_index, max_element, max_index)

نتيجة لتشغيل هذا البرنامج ، سيتم عرض المصفوفة ، والحد الأدنى والحد الأقصى للعناصر ، وكذلك الفهارس الخاصة بهم على الشاشة:

المصفوفة:

4 7 2

6 9 1

3 5 8

الحد الأدنى للعنصر: 1 ، الفهرس: (1 ، 2)

الحد الأقصى للعنصر: 9 ، الفهرس: (1 ، 1)

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

نهج لإيجاد الحد الأدنى والحد الأقصى لعناصر المصفوفة

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

البحث الخطي

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

خوارزمية ديكسترا

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

الفرز والفهرسة

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

التحولات الرياضية

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

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

استخدام الحلقات في البرنامج

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

الأنواع الأكثر شيوعا من الحلقات هي لحين الحلقات.

تتيح لك الحلقة إجراء عدد معين من التكرارات. يتكون من ثلاثة أجزاء: التهيئة والشرط والزيادة (في حالة زيادة العداد) أو التناقص (في حالة تقليل العداد). سيؤدي كل تكرار للحلقة إلى إجراء محدد في جسم الحلقة.

مثال على حلقة في برنامج للبحث عن الحد الأدنى والحد الأقصى لعناصر المصفوفة:

كثافة العمليات مينليمنت = مصفوفة [0] [0] ؛ / / نفترض أن العنصر الأول هو الحد الأدنى

إنت ماكسيليمنت = مصفوفة [0] [0] ؛ / / نفترض أن العنصر الأول هو الحد الأقصى

إنت مينرويندكس = 0; // индекс строки минимального элемента

int minColumnIndex = 0; // индекс столбца минимального элемента

int maxRowIndex = 0; // индекс строки максимального элемента

int maxColumnIndex = 0; // индекс столбца максимального элемента

for (int i = 0; i < rows; i++) {

for (int j = 0; j < columns; j++) {

if (matrix[i][j] < minElement) {

minElement = matrix[i][j];

minRowIndex = i;

minColumnIndex = j;

}

if (matrix[i][j] > maxElement) {

maxElement = matrix[i][j];

ماكسروينديكس = أنا;

ماكسكولومنينديكس = ي;

}

}

}

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

مثال على حلقة في برنامج للبحث عن الحد الأدنى والحد الأقصى لعناصر المصفوفة:

الباحث الأول = 0;

بينما (أنا < الصفوف) {

الباحث ي = 0;

بينما (ي < الأعمدة) {

إذا (مصفوفة [ط] [ي] < مينليمنت) {

ألغام = مصفوفة [ط] [ي];

مينرويندكس = أنا;

مينكولومنينديكس = ي;

}

إذا (مصفوفة [أنا] [ي] > الحد الأقصى) {

ماكسليمنت = مصفوفة [أنا] [ي];

ماكسروينديكس = أنا;

ماكسكولومنينديكس = ي;

}

j++;

}

أنا++;

}

تسمح لنا الحلقات بالتكرار بكفاءة من خلال عناصر المصفوفة والعثور على الحد الأدنى والحد الأقصى للعناصر مع مؤشراتها. عند استخدام الحلقات ، من الضروري التأكد من أن نطاق المتغيرات محدود حتى لا يتم تغيير قيم الحد الأدنى والحد الأقصى للعناصر عن طريق الخطأ.

خوارزمية لإيجاد الحد الأدنى والحد الأقصى للعناصر

عند حل هذه المشكلة ، ستكون الخوارزمية كما يلي:

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

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

تعقيد الخوارزمية

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

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

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

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

مثال على برنامج لإيجاد الحد الأدنى والحد الأقصى للعناصر

فيما يلي مثال على برنامج بايثون الذي يجد الحد الأدنى والحد الأقصى للعناصر في مصفوفة ويخرج قيمها والفهارس المقابلة لها.

# إنشاء مصفوفة

مصفوفة = [

[5, 10, 15],

[20, 25, 30],

[35, 40, 45]

]

# المتغيرات لتخزين الحد الأدنى والحد الأقصى للعناصر

مين_عنصر = مصفوفة [0] [0]

ماكس _عنصر = مصفوفة [0] [0]

# المتغيرات لتخزين فهارس الحد الأدنى والحد الأقصى للعناصر

مؤشر الحد الأدنى = (0 ، 0)

ماكس _ مؤشر = (0 ، 0)

# مصفوفة اجتياز

لأني في النطاق (لين (مصفوفة)):

إلى عن على ي في النطاق (لين (مصفوفة [أنا])):

# إذا كان العنصر الحالي أقل من الحد الأدنى ، فقم بتحديث قيمته وفهارسه

إذا مصفوفة [أنا] [ي] < دقيقة _ عنصر:

مين_عنصر = مصفوفة [أنا] [ي]

مين_إندكس = (أنا ، ي)

# إذا كان العنصر الحالي أكبر من الحد الأقصى ، فقم بتحديث قيمته وفهارسه

إذا مصفوفة [أنا] [ي] > ماكس _ عنصر:

ماكس _عنصر = مصفوفة [أنا] [ي]

ماكس _ مؤشر = (أنا ، ي)

# إخراج النتائج

طباعة ("الحد الأدنى للعنصر:" ، الحد الأدنى للعنصر)

طباعة ("فهارس الحد الأدنى للعنصر:" ، مين_إندكس)

طباعة ("الحد الأقصى للعنصر:" ، الحد الأقصى للعنصر)

طباعة ("فهارس العنصر الأقصى:" ، الفهرس الأقصى)

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

سؤال وجواب

ما هي الخوارزمية التي يمكن استخدامها للعثور على الحد الأدنى والحد الأقصى لعناصر المصفوفة?

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

كيف أذهب من خلال جميع عناصر المصفوفة عند البحث عن الحد الأدنى والحد الأقصى للعناصر?

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

ما هي الإجراءات التي يجب تنفيذها إذا كانت المصفوفة فارغة?

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

هل من الممكن استخدام وظائف لحل هذه المشكلة?

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

ما هو تعقيد الخوارزمية لإيجاد الحد الأدنى والحد الأقصى لعناصر المصفوفة?

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