یک متد جنریک در جاوا بنویسید که یک لیست از عناصر قابل مقایسه و یک عنصر هدف را بگیرد، لیست را مرتب کند و با جستجوی باینری اندیس عنصر هدف را برگرداند (یا -1 اگر پیدا نشد).
13.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 02:23 0.0
از Collections.sort برای مرتبسازی لیست و از Collections.binarySearch برای جستجوی باینری استفاده کنید. متد باید جنریک باشد، مثلاً با امضای public static > int findIndex(List list, T key)، و اگر نتیجهٔ binarySearch منفی بود مقدار -1 برگردانید. توجه کنید که مرتبسازی لیست ورودی آن را تغییر میدهد—اگر نمیخواهید لیست اصلی تغییر کند، ابتدا یک کپی با new ArrayList(list) بسازید و روی آن مرتب کنید. همچنین میتوانید برای مرتبسازی دلخواه از Comparator استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای پیادهسازی میتوانید یک متد جنریک مانند public static <T extends Comparable<? super T>> int findIndex(List<T> list, T key) بنویسید که ابتدا (در صورت نیاز به حفظ لیست اصلی) یک کپی new ArrayList<>(list) بسازد، سپس با Collections.sort آن را مرتب کرده و با Collections.binarySearch اندیس عنصر هدف را بیابد — اگر نتیجه منفی بود -1 برگردانید. دقت کنید Collections.sort لیست را تغییر میدهد و در صورتی که ترتیب دلخواهی میخواهید میتوان نسخهای از متد با پارامتر Comparator اضافه کرد. این روش ساده و امن است ولی پیچیدگی زمانی مرتبسازی O(n log n) را دارد که برای استفادههای مکرر ممکن است بهینهترین راه نباشد.
گزارش