یک برنامهٔ C# بنویسید که مجموعهای از مقادیر عددی مربوط به زمان اجرا یا بار کاری (مثلاً اندازهگیریهای سری زمانی) را از کاربر بگیرد و با استفاده از List.Insert هر مقدار جدید را در موقعیت مناسب برای نگهداری لیست به صورت مرتب صعودی درج کرده و لیست نهایی را چاپ کند.
2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:13 0.0
برای حل، از یک List استفاده کنید و برای هر مقدار ورودی با پیمایش از ابتدا تا انتها، اولین اندیسی که مقدار موجود بزرگتر از مقدار جدید است پیدا کنید و با متد List.Insert مقدار را در آن اندیس درج کنید (اگر اندیسی پیدا نشد با Insert در انتها اضافه کنید). دقت کنید قبل از Insert محدودهٔ اندیس را کنترل کنید؛ پیچیدگی درج O(n) است، بنابراین برای مجموعههای بزرگ بهتر است از جستجوی دودویی یا ساختارهای دادهٔ دیگر استفاده کنید؛ این روش برای کاربردهای پایهای در آنالیز دادهها یا سنجشهای ساده سیستمها مفید و مناسب برای سطوح مبتدی است.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
این روش با استفاده از List.Insert برای هر ورودی، در عمل به O(n) عملیات درج میرسد که برای مجموعههای بزرگ میتواند کارایی را به شدت کاهش دهد. برای بهبود کارایی میتوانید از متد BinarySearch استفاده کنید تا محل درج را به صورت O(log n) بیابید و سپس با List.Insert در آن اندیس درج کنید. اگر قصد دارید همچنان از روش خطی استفاده کنید، مطمئن شوید که قبل از Insert شاخص را به درستی محاسبه کنید و در صورت نبود مقدار بزرگتر، عدد را در انتهای لیست اضافه کنید. بهطور کلی، این روش برای تمرین و دادههای کوچک مناسب است و برای دادههای بزرگتر استفاده از ساختارهای دادهٔ مناسبتر مانند درختان جستجو یا ساختارهای مرتبشده بهتر است.
گزارش