نمایش نتایج 1 تا 9 از 9

نام تاپیک: الگوریتم پیدا کردن کوچکترین اعداد

  1. #1

    الگوریتم پیدا کردن کوچکترین اعداد

    با سلام
    دوستان من میخوام در بین n عدد کوچکترین پنج عدد رو پیدا کنم ساده ترین الگوریتم به نظر شما چی میتونه باشه؟(نکته:کوچکترین پنج عدد)

  2. #2
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: الگوریتم پیدا کردن کوچکترین اعداد

    نقل قول نوشته شده توسط hojjat_gh مشاهده تاپیک
    با سلام
    دوستان من میخوام در بین n عدد کوچکترین پنج عدد رو پیدا کنم ساده ترین الگوریتم به نظر شما چی میتونه باشه؟(نکته:کوچکترین پنج عدد)
    ۱.نگفتید این n عددسورت شدند یا نه؟
    ۲.ساده‌ترین الگریتم معنی ندارد، سادگی را به چی حساب میکنید؟ چند خط کد؟ چند نوع عملیات مختلف؟ چند بار اجرا شدن چند خط کد از یکبار اجرا شدن تمام خطهایه کد با هم ساده‌تر حساب میشه؟ الگریتمی که کمترین استفاده از حافظه ر ا میکند و بیشترین مقدار عملیات انجام میده از الگریتمی که بیشترین مقدار حافظه را میگیرد و کمترین مقدار عملیات انجام میده ساده تر است ؟ یا بر عکس؟ الگریتمی که یکمقداری از حافظه و یکمقداری از عملیات سنگین است ولی ۸۰ درصد بچه دبستانی ازش در ذهنشان استفاده میکند از الگریتمی که ۹۰ درصد دانشگاه‌هیها در ذهنشان استفاده میکنند ساده تر است یا نیست ؟ چرا و به چه دلیل؟

    (نکته، با اینکه این سوال به نظر میاد که تکلیف مدرسه‌ای باشد، اولین کاری که باید انجام بشه دقیق مطرح کردن سوال است، اگر سوال دقیق مطرح نشده باشد که واقعا جواب باید چه خصوصیات و شرائطی را ارضا کند ، دنبال جواب درست گشتن براش وقت هدر دادن است).

    ۳.ساده‌ترین الگریتم به نظر کسی چی میتواند باشد معنی ندارد، اگر که سادگی الگریتمها را با یکدیگر قابل مقایسه نباشند هر الگریتمی که اراعه داده بشد باید ساده‌ترین الگریتم قبول داشت (اگر که نه نمیخواهند قبول کنند باید اینکه سادگیش از یک الگریتم دیگر کمتر و یا بیشتر است را اثبات کنند).

    برایه سوالات مبهم جوابهای درست زیادی هستند که با هم، هم متغایرت و هم تضاد میتوانند داشته باشند. تا جایی که میبینم باید رویه این سوال کلی زمان وقت صرف بشد تا تازه قابل پرسیدن بشه، چه بشه که بهش بخواهیم جواب هم بدیم.
    آخرین ویرایش به وسیله اَرژنگ : دوشنبه 28 مرداد 1387 در 18:55 عصر

  3. #3
    کاربر دائمی آواتار mehdad.koulab
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تبریز
    پست
    345

    نقل قول: الگوریتم پیدا کردن کوچکترین اعداد

    سلام
    اگه اعداد sort هستند كه كاري نداره اگه sort نيستند
    1)با يكي از الگوريتمها sortاش كني بعد هم اعداد رو پيدا كني
    2)اعداد رو يكي يكي با هم مقايسه كني
    ولي اگه از روش اول استفاده كني بهتره

  4. #4

    نقل قول: الگوریتم پیدا کردن کوچکترین اعداد

    نگفتید این n عددسورت شدند یا نه؟
    نه اعداد در هم اند
    ساده‌ترین الگریتم معنی ندارد، سادگی را به چی حساب میکنید؟ چند خط کد؟ چند نوع عملیات مختلف؟
    سادگی رو تعداد حداقل خط کد بابیشترین کارایی تعبیر میکنم
    چند بار اجرا شدن چند خط کد از یکبار اجرا شدن تمام خطهایه کد با هم ساده‌تر حساب میشه؟
    بستگی به شرایط و منطق برنامه داره
    الگریتمی که کمترین استفاده از حافظه ر ا میکند و بیشترین مقدار عملیات انجام میده از الگریتمی که بیشترین مقدار حافظه را میگیرد و کمترین مقدار عملیات انجام میده ساده تر است ؟ یا بر عکس؟
    تلفیق هر دو حالت
    الگوریتمی که کمترین حافظه رو اشغال کند و کمترین عملیات رو انجام بدهد

    الگریتمی که یکمقداری از حافظه و یکمقداری از عملیات سنگین است ولی ۸۰ درصد بچه دبستانی ازش در ذهنشان استفاده میکند از الگریتمی که ۹۰ درصد دانشگاه‌هیها در ذهنشان استفاده میکنند ساده تر است یا نیست ؟ چرا و به چه دلیل؟
    الگوریتمی که همه درکش کنند و در اوج سادگی بالاترین کارایی رو داشته باشه
    نمونش الگوریتم مجموع تصاعد حسابیه که گاوس زمانی که سوم دبستان بود ارایه داد و گفت که اگه اعداد 1 تا 100 رو کنار هم بذاری وزیر اون از 100 تا 1 رو بذاری مجموع هر عدد با عدد زیریش میشه 101 و بعد با توجه به اینکه 100 تا از این 101 ها داریم میشه مجموع رو بدست اورد که این رو بچه دبستانیها درک میکنند ودانشگاهیها دارند ازش استفاده میکنند!!
    (نکته، با اینکه این سوال به نظر میاد که تکلیف مدرسه‌ای باشد، اولین کاری که باید انجام بشه دقیق مطرح کردن سوال است، اگر سوال دقیق مطرح نشده باشد که واقعا جواب باید چه خصوصیات و شرائطی را ارضا کند ، دنبال جواب درست گشتن براش وقت هدر دادن است).
    شاید به نظر شما مدرسه ایه ولی برا من خیلی مهمه
    من قبول دارم که سوال رو کلی مطرح کردم ولی فکر نمیکنم که شما کلا سوال رو متوجه نشده باشید!!
    ضمن تشکر از شما واینکه شما وقت گذاشتید و این نکات وسوالات(که فکر کنم بیش از ارایه دادن یک جواب ویک الگوریتم زمان برده) رو مطرح کردید سوال دقیق من اینه که کاربر n رو( بین 6تا 100 )وارد میکنه و بعد از گرفتن n عدد توسط برنامه الگوریتم باید پنج عدد کوچک که از بقیه کوچکترند رو برگردونه
    وبرای اینکار شاید الگوریتم دودویی یا حبابی جواب بدن ولی نمیدونم چطوری ازشون استفاده کنم و ایا اینکه الگوریتم ارایه شده بهتری وجود داره؟وچطور میشه از این الگوریتمها استفاده کرد؟

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    سن
    41
    پست
    51

    نقل قول: الگوریتم پیدا کردن کوچکترین اعداد

    نقل قول نوشته شده توسط mehdad.koulab مشاهده تاپیک
    سلام
    اگه اعداد sort هستند كه كاري نداره اگه sort نيستند
    1)با يكي از الگوريتمها sortاش كني بعد هم اعداد رو پيدا كني
    2)اعداد رو يكي يكي با هم مقايسه كني
    ولي اگه از روش اول استفاده كني بهتره

    چیزی رو که با پیچیدگی (O(N حل میشه رو میخوای با nlogn یا n^2 حلش کنید ؟

    راه حل پیشنهادی من :
    یک آرایه 5 عنصری یا 5 تا متغیر تعریف میکنید . 5 عدد اول رو بصورت مرتب در این آرایه قرار میدین . بعد از عدد ششم به بعد ببینید عدد جدید ، کوچکتر از بزرگترین عدد یعنی (5)a در آرایه 5 تایی هست ؟
    اگه کوچکتر بود (5) a رو حذف ، و تا پیدا شدن مکان درست عدد جدید در آرایه 5 تایی ، اعداد رو به جلو شیفت میدین (یعنی دوباره ارایه را با مقدار جدید مرتب کنید) .پیچیدگی حداکثر n*5*log 5 است یعنی همان ( O(N
    اگر دوستان کسی راه حل دیگری سراغ داره یا اشکالی در این راه حل میبینه ممنون میشم .


    موفق باشید
    آخرین ویرایش به وسیله dadvand : سه شنبه 29 مرداد 1387 در 00:39 صبح

  6. #6
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    Iran
    سن
    41
    پست
    51

    نقل قول: الگوریتم پیدا کردن کوچکترین اعداد

    نقل قول نوشته شده توسط hojjat_gh مشاهده تاپیک
    سادگی رو تعداد حداقل خط کد بابیشترین کارایی تعبیر میکنم

    تلفیق هر دو حالت
    الگوریتمی که کمترین حافظه رو اشغال کند و کمترین عملیات رو انجام بدهد


    الگوریتمی که همه درکش کنند و در اوج سادگی بالاترین کارایی رو داشته باشه


    وبرای اینکار شاید الگوریتم دودویی یا حبابی جواب بدن ولی نمیدونم چطوری ازشون استفاده کنم
    در ضمن توضیحات جناب آرژنگ کاملا درست است و باید توجه داشته باشین .
    ایشون یک راهنمایی کلی کردن که همیشه بدردتون خواهد خورد و بجای توجیه اشتباهتان که بعضی شون هم کاملا غلط است باید از ایشون تشکر کنید .

    معیار شما از تلفیق کمترین حافظه و کمترین عملیات چیست ؟ هر کدام چند درصد ؟ در خیلی برنامه ها حافظه برای ما اصلا مهم نیست و حاضر به هزینه هر مقدار آن هستیم ....

    الگوریتم دودویی مربوط به جستجو انهم در لیست مرتب است ولی حبابی مربوط به مرتب سازی است و این دو کاملا باهم فرق دارند .

    اگه تعبیر شما از سادگی حداقل خط کد بابیشترین کارایی است ، این دو همزمان کم کنار هم قرار میگیرن .

    معمولا الگوریتمهایی که کارایی بالایی دارند پیچیده ترند و درکش مشکل تر است مثلا مرتب سازی سریع یا merg sort یا heap کمی پیچده و درک آنها کمی مشکل تر از مثلا جستجوی انتخابی است ولی کاریی این دو خیلی با هم متفاوت است .

    موفق باشی

  7. #7
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: الگوریتم پیدا کردن کوچکترین اعداد

    نقل قول نوشته شده توسط hojjat_gh مشاهده تاپیک
    شاید به نظر شما مدرسه ایه ولی برا من خیلی مهمه
    من قبول دارم که سوال رو کلی مطرح کردم ولی فکر نمیکنم که شما کلا سوال رو متوجه نشده باشید!!
    ضمن تشکر از شما واینکه شما وقت گذاشتید و این نکات وسوالات(که فکر کنم بیش از ارایه دادن یک جواب ویک الگوریتم زمان برده) رو مطرح کردید سوال دقیق من اینه که کاربر n رو( بین 6تا 100 )وارد میکنه و بعد از گرفتن n عدد توسط برنامه الگوریتم باید پنج عدد کوچک که از بقیه کوچکترند رو برگردونه
    وبرای اینکار شاید الگوریتم دودویی یا حبابی جواب بدن ولی نمیدونم چطوری ازشون استفاده کنم و ایا اینکه الگوریتم ارایه شده بهتری وجود داره؟وچطور میشه از این الگوریتمها استفاده کرد؟
    منظورم این نبود که سطحش پائینه و مدرسه‌ای، ممکن بود مال دانشگاه هم باشد ولی به نظر مانند یک تکلیفی آمد که در کلاس داده باشند (تکلیف، مشق ، تز دانشگاه ، همشان برایه من یکی هستند).

    اگر یک الگریتم داشته باشید که کوچکترین عدد را برگرداند، مشکلتان حل است.

    یا اینکه بر طبق چیزی که گفتید همینطوری که داده‌ها وارد میشند هر بار با ۵ تا از کوچکترین اعدادی که وارد شده مقایسه کنید و اگر از یکیشان کوچکتر بود، نگهشان دارید.

    یا اینکه، روشهایه پیش پا افتاده دیگر زیاد هستند، ولی هیچکدام از چیزهایی که گفتم به یادگیری شما به اندازه اینکه یک ساعت خودتان به مسئله فکر کنید کمک نمیکنند.

    موفق باشید

    یک هینت، اگر این مسعله را به یک مسعله دیگری که میدانید حل کنید تبدیل کنید، مسعله را حل شده حساب کنید.
    آخرین ویرایش به وسیله اَرژنگ : سه شنبه 29 مرداد 1387 در 15:01 عصر

  8. #8
    کاربر دائمی آواتار اَرژنگ
    تاریخ عضویت
    آبان 1384
    محل زندگی
    arjang8000@gmail.com
    پست
    2,736

    نقل قول: الگوریتم پیدا کردن کوچکترین اعداد

    نقل قول نوشته شده توسط hojjat_gh مشاهده تاپیک

    الگوریتمی که همه درکش کنند و در اوج سادگی بالاترین کارایی رو داشته باشه
    نمونش الگوریتم مجموع تصاعد حسابیه که گاوس زمانی که سوم دبستان بود ارایه داد و گفت که اگه اعداد 1 تا 100 رو کنار هم بذاری وزیر اون از 100 تا 1 رو بذاری مجموع هر عدد با عدد زیریش میشه 101 و بعد با توجه به اینکه 100 تا از این 101 ها داریم میشه مجموع رو بدست اورد که این رو بچه دبستانیها درک میکنند ودانشگاهیها دارند ازش استفاده میکنند!!
    این مثال ، مثال خوبی نیست.
    ۱.انعطاف پزیری ندارد، برایه اینکه انعطاف پزیرین نداشتن این الگریتم را ببینید به جایه جمع کردن تمام اعداد فقط اعداد فرد یا زوج یا هر ۳ تا عدد یکبار یا هر چند تا اعداد یکبار را از یک تا ۱۰۰ را بخواد استفاده بشد به کار نمیاد.

    یا توانهایه اعداد از ۱ تا ۱۰۰، به عنوان مثال ۱+۴+۹+۱۶+...+۱۰۰۰۰
    همانطوری که معلوم است این الگریتم فقط بدرد حالتهایه خاصی میخورد، در حالی که با استفاده از یک لوپ میشه خیلی انعطاف پزیری بدست آورد.

    ولی هیچ کدام از الگریتمها را نمیشه از اون یکی ساده‌تر شناخت.

  9. #9

    نقل قول: الگوریتم پیدا کردن کوچکترین اعداد

    خیلی جالب بود مرسی

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •