naeeme
دوشنبه 02 اردیبهشت 1387, 12:26 عصر
آیا C# تابعی داره که قسمت اعشار یک عدد اعشاری رو بده؟
*******************************************
اگر این تابع وجود نداره، لطفا به این صورت مسئله توجه کنید و یک راه حل با سرعت بالا به من پیشنهاد بدین. سرعت برای من خیلی اهمیت داره:
به طور متوسط 7 میلیون عدد دارم که باید در بین این 7 میلیون عدد، عددی که دارای کمترین مقدار اعشار( بیشترین طول قسمت اعشاری) هست، رو پیدا کنم.
یک روش این هست که برای هر عدد قسمت صحیح عدد رو از کل عدد کم کنم و قسمت اعشار اون رو به دست بیارم و بعد با استفاده از یک حلقه WHILE تعداد ارقام اعشار این عدد رو پیدا کنم.
روش دوم این هست که قسمت اعشار عدد رو به دست بیارم و بعد اون رو به string تبدیل کنم و طول این رشته رو به دست اورده و منهای 2 کنم.
هر دو روش بسیار زمان بر هستند. روش اول در حدود 3 دقیقه و روش دوم در حدود 4.5 دقیقه طول می کشه که هر کاربری باشه به من برنامه نویس فقط بد و بیراه میگه!!:ناراحت:
روش سوم این هست که قسمت اعشار رو به دست بیارم و در یک ArrayList قرار بدم. بعد اون رو مرتب کنم و کوچکترین مقدار رو برگردونم. این به نظر من بهینه ترین در بین این 3 روش هست اما باز هم زمان زیادی می بره( کمتر از 1 دقیقه) که با توجه به زمان بسیار بالای کل عملیات من که در حدود 7 دقیقه هست، این عملیات جزیی، زمان بالایی داره و باید به کمتر از 10 ثانیه برسه.
یه روش بهینه پیشنهاد می کنید؟؟
*******************************************
اگر این تابع وجود نداره، لطفا به این صورت مسئله توجه کنید و یک راه حل با سرعت بالا به من پیشنهاد بدین. سرعت برای من خیلی اهمیت داره:
به طور متوسط 7 میلیون عدد دارم که باید در بین این 7 میلیون عدد، عددی که دارای کمترین مقدار اعشار( بیشترین طول قسمت اعشاری) هست، رو پیدا کنم.
یک روش این هست که برای هر عدد قسمت صحیح عدد رو از کل عدد کم کنم و قسمت اعشار اون رو به دست بیارم و بعد با استفاده از یک حلقه WHILE تعداد ارقام اعشار این عدد رو پیدا کنم.
روش دوم این هست که قسمت اعشار عدد رو به دست بیارم و بعد اون رو به string تبدیل کنم و طول این رشته رو به دست اورده و منهای 2 کنم.
هر دو روش بسیار زمان بر هستند. روش اول در حدود 3 دقیقه و روش دوم در حدود 4.5 دقیقه طول می کشه که هر کاربری باشه به من برنامه نویس فقط بد و بیراه میگه!!:ناراحت:
روش سوم این هست که قسمت اعشار رو به دست بیارم و در یک ArrayList قرار بدم. بعد اون رو مرتب کنم و کوچکترین مقدار رو برگردونم. این به نظر من بهینه ترین در بین این 3 روش هست اما باز هم زمان زیادی می بره( کمتر از 1 دقیقه) که با توجه به زمان بسیار بالای کل عملیات من که در حدود 7 دقیقه هست، این عملیات جزیی، زمان بالایی داره و باید به کمتر از 10 ثانیه برسه.
یه روش بهینه پیشنهاد می کنید؟؟