تصف هذه المقالة خوارزمية المسافة القصوى للحساب المنفذة في Java. شاركه للرجوع إليه ، على النحو التالي:
وصف السؤال
بالنظر إلى صفيف تشكيل ، ابحث عن أقصى مسافة تراكمية J - I ، إذا كان [i] <a [j] و i <j
حل
التعقيد: ثلاثة عمليات مسح ، في كل مرة تعقيد O (N)
الخوارزمية: {5،3،4،0،1،4،1}
ابحث عن تسلسل تنازلي {5،3،0} بدءًا من العنصر الأول
i = 3 ، j = 6 ، j تم تهيئتها من مسح الذيل ، i = 3 ، j = 6 ، a [i] = 0
تنفيذ الكود
int static int maxindexdistance (int a []) {boolean [] isDes = new Boolean [A.Length] ؛ int min = a [0] ؛ ISDES [0] = صواب ؛ لـ (int i = 0 ؛ i <a.length ؛ i ++) {if (a [i] <min) {iSdes [i] = true ؛ min = a [i] ؛ }} int maxdis = 0 ؛ int i = A.Length - 1 ؛ int j = A.Length - 1 ؛ System.out.println (Arrays.ToString (ISDES)) ؛ بينما (i> = 0) {بينما (iSdes [i] == false) {i-- ؛ } بينما (j> i && a [j] <= a [i]) {j-- ؛ } if ((j - i)> maxdis) {maxdis = j - i ؛ } أنا--؛ } إرجاع maxdis ؛}لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.