یک متد جنریک در جاوا بنویسید که یک لیست از عناصر قابل مقایسه و یک عنصر هدف را بگیرد، لیست را مرتب کند و با جستجوی باینری اندیس عنصر هدف را برگرداند (یا -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 استفاده کنید.

توسط پژوهشگر در 198 روز قبل ساعت 02:23
دسته بندی ها: Java Java for beginner
sara در 198 روز قبل ساعت 02:24

برای پیاده‌سازی می‌توانید یک متد جنریک مانند 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) را دارد که برای استفاده‌های مکرر ممکن است بهینه‌ترین راه نباشد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری