عندما يصبح العمل مع المصفوفات صعبا ، قد يكون من المفيد معرفة كيفية تدوير صفيف بمقدار 90 درجة في جافا. يمكن أن يكون هذا مفيدا في العديد من المواقف ، على سبيل المثال ، عند العمل مع المصفوفات أو عند حل المشكلات باستخدام الرسوم البيانية. في هذه المقالة ، سنلقي نظرة على بعض الأساليب والأمثلة المفيدة التي ستساعدك على إنجاز هذه المهمة باستخدام لغة برمجة جافا.
الطريقة الأولى التي سننظر فيها هي طريقة تدوير الصفيف 90 درجة في اتجاه عقارب الساعة. للقيام بذلك ، سوف نستخدم مجموعة إضافية من شأنها أن تكون بمثابة تخزين مؤقت لعناصر المصفوفة الأصلية. ثم سنقوم بالتكرار على عناصر المصفوفة الأصلية ووضعها في تخزين مؤقت ، مع مراعاة الإحداثيات الجديدة وفقا للصيغة: تنسيق جديد = (تنسيق جديد + 1) ٪ بعد المصفوفة. وبالتالي ، سيتم نقل كل عنصر من المصفوفة الأصلية إلى موقع جديد في التخزين المؤقت.
لنبدأ بتهيئة المصفوفة الأصلية:
الباحث [] [] صفيف = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
الآن دعنا ننشئ مصفوفة جديدة سنضع فيها عناصر المصفوفة الأصلية:
إنت [] [] روتاتاراي = إنت جديد[صفيف [0].طول] [صفيف.طول];
بعد ذلك ، سنقوم بالتكرار على عناصر المصفوفة الأصلية ووضعها في موقع جديد في التخزين المؤقت:
ونتيجة لذلك ، بعد تنفيذ هذا الرمز ، المدورةسيحتوي مصفوفة الصف على عناصر المصفوفة الأصلية ، الموضوعة بترتيب جديد ، مع مراعاة الدوران بمقدار 90 درجة في اتجاه عقارب الساعة.
- مشكلة تدوير صفيف في جافا
- لماذا هناك حاجة لتدوير مجموعة?
- ميزات مهمة تدوير الصفيف
- كيفية تدوير صفيف بمقدار 90 درجة في جافا
- 1. باستخدام مصفوفة مؤقتة
- 2. باستخدام خوارزمية استبدال العنصر
- نموذج التعليمات البرمجية
- الطريقة 1: استخدام مصفوفة إضافية
- الطريقة 2: استخدام متغير وسيط
- الطريقة 3: استخدام خوارزمية الدوران داخل المصفوفة
- سؤال وجواب
- كيف يمكنني تدوير مجموعة من قبل 90 درجة في جاوة?
- ما هي الطرق التي يمكن استخدامها لتدوير مجموعة من قبل 90 درجة في جاوة?
- هل من الممكن لتدوير مجموعة من قبل 90 درجة دون استخدام ذاكرة إضافية في جافا?
- هل من الممكن لتدوير مجموعة ثنائية الأبعاد متفاوتة من قبل 90 درجة في جاوة?
- هل من الممكن لتدوير مجموعة ثلاثية الأبعاد من قبل 90 درجة في جاوة?
- هل من الممكن لتدوير مجموعة 180 درجة في جاوة?
مشكلة تدوير صفيف في جافا
يعد تدوير المصفوفة بمقدار 90 درجة مهمة شائعة يمكن أن تحدث عند العمل مع المصفوفات في جافا. يمكن أن يكون مفيدا لحل المهام المختلفة ، مثل عمليات المصفوفة أو حل الألغاز.
المشكلة الرئيسية عند تدوير مصفوفة هي إعادة ترتيب العناصر في المصفوفة بكفاءة بحيث تصبح الصفوف أعمدة وتصبح الأعمدة صفوفا. بمعنى آخر ، يجب أن يشغل كل عنصر في الصف الموضع الذي يشغله في العنصر المقابل في العمود.
يمكن استخدام طرق وخوارزميات مختلفة لحل هذه المشكلة. واحدة من أبسط الطرق هي إنشاء مصفوفة جديدة وتعبئتها بعناصر المصفوفة الأصلية بترتيب عكسي.
- قم بإنشاء مصفوفة جديدة ثنائية الأبعاد بنفس البعد مثل المصفوفة الأصلية.
- املأ المصفوفة الجديدة بعناصر المصفوفة الأصلية بترتيب عكسي. للقيام بذلك ، يمكنك استخدام حلقة مزدوجة.
- إرجاع مجموعة جديدة.
ومع ذلك ، قد يكون هذا النهج غير فعال عند العمل مع المصفوفات الكبيرة ، لأنه يتطلب ذاكرة إضافية لتخزين صفيف جديد.
النهج الأكثر كفاءة هو تغيير العناصر في المصفوفة الأصلية دون إنشاء مصفوفة جديدة. للقيام بذلك ، يمكنك استخدام الخوارزمية التالية:
- قم بتطبيق التبديل على المصفوفة الأصلية. هذا يعني أن كل عنصر [أنا] [ي] سيتم استبداله بعنصر[ي] [أنا].
- عكس كل صف في المصفوفة الناتجة. يمكن القيام بذلك عن طريق تبديل العنصر الأول والأخير ، والثاني وقبل الأخير ، وما إلى ذلك.
يتيح لك هذا الأسلوب تدوير المصفوفة بمقدار 90 درجة دون استخدام ذاكرة إضافية ، ولكن له بعض القيود. إنه يعمل فقط مع المصفوفات المربعة ، أي المصفوفات حيث يكون عدد الصفوف مساويا لعدد الأعمدة. بالنسبة للمصفوفات المستطيلة ، يجب استخدام خوارزمية مختلفة.
بمعرفة الطرق والخوارزميات المختلفة لتدوير المصفوفة ، يمكنك اختيار النهج الأنسب بناء على احتياجاتك ومتطلبات الأداء.
لماذا هناك حاجة لتدوير مجموعة?
المصفوفة هي واحدة من هياكل البيانات الرئيسية في البرمجة. إنها مجموعة مرتبة من العناصر من نفس النوع ، والتي يتم الوصول إليها بواسطة فهرس. في بعض الحالات ، يصبح من الضروري تدوير المصفوفة بمقدار 90 درجة ، أي تحويلها بحيث تصبح الصفوف أعمدة وتصبح الأعمدة صفوفا. غالبا ما تستخدم هذه العملية في معالجة الصور والعمل مع المصفوفات وحل بعض المشكلات الحسابية.
السبب الرئيسي لتدوير المصفوفة هو الحاجة إلى تغيير اتجاه البيانات من أجل الحصول على تنسيق مناسب للمعالجة. على سبيل المثال ، في مهام رؤية الكمبيوتر حيث يتم تقديم صورة كمصفوفة ثنائية الأبعاد ، غالبا ما يكون من الضروري تدويرها لتبسيط التحليل والمعالجة.
قد يكون تدوير المصفوفة ضروريا أيضا عندما يكون من الضروري تغيير ترتيب العناصر في المصفوفة لأداء عمليات معينة بشكل أكثر كفاءة. على سبيل المثال ، عند العمل مع المصفوفات ، يمكن للدوران بزاوية 90 درجة تغيير ترتيب العناصر بطريقة تجعل بعض الخوارزميات تعمل بشكل أسرع وأكثر كفاءة.
في البرمجة ، هناك العديد من الأساليب والخوارزميات لتدوير المصفوفة بمقدار 90 درجة. في لغة برمجة جافا ، يمكن استخدام طرق وخوارزميات مختلفة لهذه المهمة ، بما في ذلك استخدام مصفوفة إضافية ، واستخدام الحلقات والفهارس المتداخلة ، وكذلك استخدام التحولات الرياضية.
ميزات مهمة تدوير الصفيف
مهمة تدوير صفيف بمقدار 90 درجة تحظى بشعبية كبيرة وتوجد في العديد من المشاكل الخوارزمية. فكرتها الرئيسية هي تبديل عناصر المصفوفة بحيث تصبح الصفوف أعمدة وتصبح الأعمدة صفوفا.
يمكن تدوير المصفوفة في اتجاه عقارب الساعة وعكس اتجاه عقارب الساعة. كل خيار من الخيارات له منهجه الخاص ومنطق الحل.
عند حل مشكلة تدوير المصفوفة ، يجب مراعاة الميزات التالية:
- يجب أن تكون أحجام المصدر والمصفوفات الناتجة متسقة. إذا كان حجم الصفيف الأصلي ن س م ، ثم المصفوفة الناتجة سيكون لها حجم م س ن (عند تدويرها 90 درجة في اتجاه عقارب الساعة) أو الحجم ن س م (عند تدويرها عكس اتجاه عقارب الساعة).
- عندما يتم تدوير الصفيف 90 درجة في اتجاه عقارب الساعة ، فإن آر[أنا][ي] عنصر المصفوفة الأصلية سيصبح آر [ي] [ن-1-أنا] عنصر المصفوفة الناتجة.
- عندما يتم تدوير المصفوفة 90 درجة عكس اتجاه عقارب الساعة ، سيصبح عنصر[أنا][ي] من المصفوفة الأصلية هو عنصر[م-1-ي][أنا] من المصفوفة الناتجة.
- قد يختلف التعقيد الخوارزمي للحل اعتمادا على النهج المختار. في بعض الحالات ، من الممكن تحسين الحل ، على سبيل المثال ، باستخدام ذاكرة إضافية أو تغيير فهارس العناصر.
بعد تدوير المصفوفة بمقدار 90 درجة ، يتم ترتيب عناصرها بترتيب جديد ، والذي يمكن أن يكون مفيدا في المهام المختلفة المتعلقة بمعالجة البيانات وتحليلها.
يعد تدوير المصفوفة بمقدار 90 درجة تمرينا جيدا لتطوير مهارات التفكير المنطقي والبرمجة. سيساعدك إتقان هذه المهمة على فهم أساسيات العمل مع المصفوفات والعناصر والفهارس بشكل أفضل.
كيفية تدوير صفيف بمقدار 90 درجة في جافا
يعد تدوير المصفوفة بمقدار 90 درجة مهمة شائعة إلى حد ما يمكن مواجهتها عند العمل مع المصفوفات في جافا. في هذا الدليل ، سنلقي نظرة على العديد من الطرق التي ستساعدك على تدوير صفيف بمقدار 90 درجة في جافا.
1. باستخدام مصفوفة مؤقتة
تتمثل إحدى طرق تدوير المصفوفة بمقدار 90 درجة في إنشاء مصفوفة جديدة ونسخ العناصر من المصفوفة الأصلية إلى المصفوفة الجديدة بالترتيب الصحيح.
- قم بإنشاء مصفوفة جديدة بأبعاد حيث يكون عدد الصفوف مساويا لعدد أعمدة المصفوفة الأصلية ، وعدد الأعمدة يساوي عدد صفوف المصفوفة الأصلية.
- انتقل إلى المصفوفة الأصلية وانسخ العناصر من المصفوفة الأصلية إلى المصفوفة الجديدة ، مع مراعاة الترتيب المطلوب.
- في المصفوفة الجديدة ، سيتم إعادة ترتيب الصفوف والأعمدة وسيتم تدوير المصفوفة 90 درجة.
2. باستخدام خوارزمية استبدال العنصر
هناك طريقة أخرى لتدوير مصفوفة بمقدار 90 درجة وهي إجراء خوارزمية لاستبدال العناصر في المصفوفة الأصلية. تتمثل العملية في استبدال عنصر في كل خلية من الصفيف بعنصر في الموضع المعاكس.
- تشغيل حلقة لاجتياز نصف طول المصفوفة.
- استبدل عنصرا في كل خلية من المصفوفة بعنصر في الموضع المعاكس ، باستخدام متغير مؤقت لتخزين القيمة.
- بعد الانتهاء من الحلقة ، سيتم تدوير المصفوفة 90 درجة.
نموذج التعليمات البرمجية
هنا مثال رمز يوضح الطريقة الأولى:
الطبقة العامة الرئيسية {
العامة ثابت الفراغ الرئيسي (سلسلة[] الحجج) {
كثافة العمليات [] [] مصفوفة = {{1 ، 2 ، 3},
{4, 5, 6},
{7, 8, 9}};
الصفوف كثافة العمليات = مصفوفة.length;
int cols = matrix[0].length;
int[][] rotatedMatrix = new int[cols][rows];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
rotatedMatrix[j][rows - i - 1] = matrix[i][j];
}
}
// Вывод повернутого массива
for (int i = 0; i < cols; i++) {
for (int j = 0; j < rows; j++) {
System.out.print(rotatedMatrix[i][j] + " ");
}
System.out.println();
}
}
}
с учетом нужного порядка. ثم يخرج الصفيف المستدير.
الآن أنت تعرف طريقتين لتدوير صفيف بمقدار 90 درجة في جافا. يمكنك اختيار الطريقة التي تفضلها وتطبيقها في التعليمات البرمجية الخاصة بك.
الطريقة 1: استخدام مصفوفة إضافية
عند استخدام هذه الطريقة ، نقوم بإنشاء مصفوفة جديدة وإعادة كتابة عناصر المصفوفة الأصلية ، مع مراعاة الدوران بمقدار 90 درجة.
الخطوات:
- إنشاء مصفوفة جديدة مع أبعاد المقابلة لمصفوفة استدارة.
- انتقل من خلال كل عنصر من عناصر المصفوفة الأصلية واكتبها إلى الموضع المناسب للمصفوفة الجديدة وفقا للقاعدة التالية:
- عرض المصفوفة الجديدة على الشاشة.
مثال على الكود:
"'جافا
الطبقة العامة الرئيسية {
public static void main(String[] args) {
int[][] matrix = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int n = matrix.length;
int[][] rotatedMatrix = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
rotatedMatrix[j][n — i — 1] = matrix[i][j];
}
}
System.out.println(«Повернутая матрица на 90 градусов:»);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.print(rotatedMatrix[i][j] + » «);
}
System.out.println();
}
}
}
«`
Результат:
«`
Повернутая матрица на 90 градусов:
7 4 1
8 5 2
9 6 3
"`
في هذا المثال ، تم تدوير المصفوفة الأصلية 3 3 3 90 درجة عكس اتجاه عقارب الساعة.
الطريقة 2: استخدام متغير وسيط
الطريقة الثانية التي يمكن استخدامها لتدوير المصفوفة بمقدار 90 درجة هي استخدام متغير وسيط.
تتكون خوارزمية هذه الطريقة من الخطوات التالية:
- قم بإنشاء مصفوفة جديدة مع الأبعاد المنعكسة بالنسبة إلى المصفوفة الأصلية.
- انتقل من خلال المصفوفة الأصلية واقلب عناصرها قبل وضعها في المصفوفة الجديدة. То есть, если элемент исходного массива был на позиции (i, j), то поместите его на позицию (j, i) в новом массиве.
Вот пример кода, демонстрирующий, как реализовать этот метод в Java:
public static int[][] rotateArray(int[][] arr) {
int rows = arr.length;
int cols = arr[0].length;
int[][] rotated = new int[cols][rows];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
rotated[j][i] = arr[i][j];
}
}
return rotated;
}
هنا ، المتغير" أر " هو مجموعة المصدر التي تحتاج إلى أن تكون استدارة 90 درجة. تقوم طريقة" روتاتيراي "بإنشاء مصفوفة" استدارة " جديدة ذات أبعاد تنعكس بالنسبة إلى المصفوفة الأصلية. ثم ، باستخدام الحلقات المتداخلة ، فإنه يعكس عناصر المصفوفة الأصلية ويضعها في مصفوفة جديدة. أخيرا ، تقوم الطريقة بإرجاع مصفوفة مستديرة.
توفر هذه الطريقة حلا أبسط لتدوير المصفوفة بمقدار 90 درجة ، ولكنها تتطلب ذاكرة إضافية لتخزين المصفوفة الجديدة.
الطريقة 3: استخدام خوارزمية الدوران داخل المصفوفة
هناك طريقة أخرى لتدوير مصفوفة بمقدار 90 درجة في جافا وهي استخدام خوارزمية الدوران داخل المصفوفة. ستكون هذه الطريقة هي الأكثر صعوبة وتتطلب فهما أعمق لكيفية عمل المصفوفات والخوارزميات.
قبل أن نبدأ ، دعونا نتذكر كيف يعمل تدوير صفيف 90 درجة في اتجاه عقارب الساعة:
- يصبح العمود الأول الصف الأخير.
- يصبح العمود الثاني الصف قبل الأخير.
- وهكذا حتى يصبح العمود الأخير الصف الأول.
لتنفيذ هذه الطريقة ، سنحتاج إلى حلقة مزدوجة. ستنتقل الحلقة الخارجية من 0 إلى نصف طول المصفوفة على طول المحور الرأسي ، وستنتقل الحلقة الداخلية من العنصر الحالي للحلقة الخارجية إلى العنصر قبل الأخير على طول المحور الأفقي. في كل تكرار للحلقة الداخلية ، سنقوم بتدوير أربعة عناصر-العنصر الحالي ، والعنصر العلوي ، والعنصر الأيمن ، والعنصر السفلي. После завершения этих операций массив будет повернут на 90 градусов.
Давайте рассмотрим следующий пример кода, который реализует этот метод:
public static void rotateArray(int[][] array) {
int n = array.length;
for (int i = 0; i < n / 2; i++) {
for (int j = i; j < n - i - 1; j++) {
int temp = array[i][j];
array[i][j] = array[n - j - 1][i];
array[n - j - 1][i] = array[n - i - 1][n - j - 1];
array[n - i - 1][n - j - 1] = array[j][n - i - 1];
array[j][n - i - 1] = temp;
}
}
}
وتمريرها المصفوفة التي تريد تدويرها بمقدار 90 درجة. إذا تم كل شيء بشكل صحيح ، يجب أن ترى أن المصفوفة تدور 90 درجة.
على سبيل المثال:
الباحث [] [] صفيف = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
روتاتيراي (صفيف);
// النواتج:
// 7 4 1
// 8 5 2
// 9 6 3
نتيجة لتنفيذ التعليمات البرمجية ، سوف نحصل على مجموعة استدارة بنسبة 90 درجة:
| 7 | 4 | 1 |
| 8 | 5 | 2 |
| 9 | 6 | 3 |
لاحظ أنه لا يمكن تطبيق هذه الطريقة إلا على المصفوفات ذات الشكل المربع ، أي المصفوفات التي لها نفس عدد الصفوف والأعمدة.
ميزة استخدام خوارزمية الدوران هذه داخل المصفوفة هي كفاءتها-يتم تنفيذها في الوقت الخطي س(ن) ، أين ن هو عدد العناصر في المصفوفة.
ومع ذلك ، فإن عيب هذه الطريقة هو أنها تعدل المصفوفة الأصلية بدلا من إنشاء مصفوفة جديدة. إذا كنت بحاجة إلى حفظ المصفوفة الأصلية ، فستحتاج إلى إنشاء نسخة قبل استدعاء الطريقة أو استخدام نهج مختلف.
سؤال وجواب
كيف يمكنني تدوير مجموعة من قبل 90 درجة في جاوة?
لتدوير صفيف بمقدار 90 درجة في جافا ، يمكنك استخدام عدة طرق.
ما هي الطرق التي يمكن استخدامها لتدوير مجموعة من قبل 90 درجة في جاوة?
لتدوير مصفوفة بمقدار 90 درجة في جافا ، يمكنك استخدام طريقة تعتمد على إنشاء مصفوفة جديدة ونسخ العناصر بترتيب جديد. يمكنك أيضا استخدام طريقة تعتمد على نقل وتقليب الأعمدة أو صفوف المصفوفة.
هل من الممكن لتدوير مجموعة من قبل 90 درجة دون استخدام ذاكرة إضافية في جافا?
نعم ، من الممكن تدوير صفيف بمقدار 90 درجة دون استخدام ذاكرة إضافية في جافا ، باستخدام طريقة تعتمد على نقل وتقليب الأعمدة أو صفوف المصفوفة.
هل من الممكن لتدوير مجموعة ثنائية الأبعاد متفاوتة من قبل 90 درجة في جاوة?
نعم ، من الممكن تدوير مصفوفة ثنائية الأبعاد غير متساوية بمقدار 90 درجة في جافا باستخدام طريقة تعتمد على نقل وتقليب الأعمدة أو صفوف المصفوفة.
هل من الممكن لتدوير مجموعة ثلاثية الأبعاد من قبل 90 درجة في جاوة?
نعم ، من الممكن تدوير مصفوفة ثلاثية الأبعاد بمقدار 90 درجة في جافا باستخدام طريقة تعتمد على نقل وتقليب الأعمدة أو صفوف المصفوفة.
هل من الممكن لتدوير مجموعة 180 درجة في جاوة?
نعم ، من الممكن تدوير مصفوفة 180 درجة في جافا باستخدام طريقة تعتمد على إنشاء مصفوفة جديدة ونسخ العناصر بترتيب جديد.