برنامه ای که 280 عدد از ورودی بگیره و بزرگترین 5 عدد رو چاپ کنه؟؟!!

دوشواری

اخراجی موقت
سلام به همگی

از دوستان در مورد "برنامه ای که 280 عدد از ورودی بگیره و بزرگترین 5 عدد رو چاپ کنه" کمک میخوام... :smile:
 

Hadi-Hashemi

عضو جدید
چند تا میشه انجام داد مثلا اعداد رو بریزی تو آرایه بعد مرتب کنی و در آخر 5 تای آخر رو چاپ کنی. البته این یکمی ضایعس. :confused: هم جا زیاد میگیره ( ذخیره 280 عدد ) هم Big O ش جالب نیست (مرتب کردن آرایه ای با 280 تایی). ولی خب خروجیش درسته.

حالا خودت هم فکر کن دیگه چیکارا میشه کرد, دوستان هم بیان نظر بدن ( تالار جاوا خیلی سوت و کوره :( )

در آخر دیدی نتونستی بیا راهنماییت میکنم ;)
 

mojdeh-eng

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

موفق باشید...
 

Hadi-Hashemi

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

موفق باشید...

عالی بود ;)

ضمنا کدش آمادش ولی نمیزارم تا مجبور بشی خودت بنویسی :D
 

me.fatima

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

موفق باشید...

فکرتون خیلی عالی بود.

عالی بود ;)

ضمنا کدش آمادش ولی نمیزارم تا مجبور بشی خودت بنویسی :D

اگه یه دو سه روز دیگه کدش رو بذارید خیلی خوب میشه..
اینجوری هرکسی مجبور میشه برنامه رو خودش بنویسه و روش فکر کنه. ( از جمله خودم )
 

Hadi-Hashemi

عضو جدید
اگه یه دو سه روز دیگه کدش رو بذارید خیلی خوب میشه..
اینجوری هرکسی مجبور میشه برنامه رو خودش بنویسه و روش فکر کنه

منم مثل شما فکر میکنم واسه همین از همون اول کدشو نذاشتم, خودم اول یه راه حل ساده ارائه کردم که فکرشون واشه. نگران کدش هم نباشید یه چند رو دیگه میذارم تا دوستان هم روش نظر بدن. شاید راه حل های بهتر دیگه هم به ذهنمون برسه ;)
 

Sarp

مدیر بازنشسته
سلام...
میتونی یه آرایه باطول پنج تعریف کنی بعد اول پنج تای اول ورودی رو توی آرایه بذار ی،بعد مرتبش کنی بعداز مقدارششم به بعد مقایسه کنی اگه عددورودی بزگتراز مقدارخونه صفرم آرایه و خونه چهارم آریه بوداونو توی ارایه بذاری و عملیات حذف اون مقدار کوچکتر ومرتب سازی رو انجام بدی...به همین ترتیب تاهرچه قدر که دوست داشته باشی میتونی براش ورودی تعریف کنی...درآخر هم همون آرایه رو درخروجی نمایش بده...(دوستان اگه جایی اشتباه کردم بهم بگید...)
امیدوارم بتونی برنامه اش رو بنویسی ...

موفق باشید...
این الگوریتم هزینه ش چقدر میشه ؟
زیاد نمیشه ؟
 

Hadi-Hashemi

عضو جدید
آره دیگه
مگه ساختمان داده پاس نکردی :دی

منظور هزینه زمانیه
مقدار زمان و حافظه مصرفی


منظورت همون Big o ؟ چه اسم جالبی گذاشتن واسش :d

والا من از Bubble Sort استفاده کردم که اونم (O(n² هستش که واسه آرایه ی 5 تایی فکر نکنم زیاد باشه ;) تا نظر شما چی باشه :smile:
 

Elham.mir

عضو جدید
سلام عزیزم....
اگه با c بخوای باید بین برنامه هام بگردم ببینم دارم یا نه....
تا فردا خبرشو میدم....:smile:
 

دوشواری

اخراجی موقت
دوستان دستتون درد نکنه تونستم یه چیزایی بنویسم. :gol: آقا هادی شما هم وقت کردی کدتو بزار مقایسه کنم :smile:

سلام عزیزم....
اگه با c بخوای باید بین برنامه هام بگردم ببینم دارم یا نه....
تا فردا خبرشو میدم....:smile:

سلام...

نه C بدردم نمیخوره وگرنه تو تالار C تاپیک میزدم بازم مرسی
 

Hadi-Hashemi

عضو جدید
کد:
[LEFT]import java.util.Scanner;

public class Hadi {
    public static int[] KabarcikSiralamasi(int[] intDizi)[COLOR=#ff0000]{[/COLOR]   //[COLOR=#ff0000] Bubble Sort[/COLOR]
        int intSayi = 0;
        for (int i = 0; i < intDizi.length; i++)
            for (int j = 0; j < intDizi.length-1; j++)
                if (intDizi[j] < intDizi[j+1]){
                    intSayi = intDizi[j];
                    intDizi[j] = intDizi[j+1];
                    intDizi[j+1] = intSayi;
                }
        return intDizi;
    [COLOR=#ff0000]}[/COLOR]                                                        //............
    public static void main(String[] args) {
        Scanner klavye = new Scanner(System.in);
        int[] intDizi = new int[5];
        int intSayi = 0;
        
        for (int i = 0; i < 280; i++) {
            System.out.print((i+1) + " Adad: ");
            if (i <= 4){
                intDizi[i] = klavye.nextInt();
                if (i == 4)
                    intDizi = KabarcikSiralamasi(intDizi);
            } else{
                intSayi = klavye.nextInt();
                if (intSayi > intDizi[4]){
                    intDizi[4] = intSayi;
                    intDizi = KabarcikSiralamasi(intDizi);
                }
            }            
        }
        for (int i = 0; i < intDizi.length; i++) {
            System.out.println(intDizi[i]);
        }        
    }
}

[/LEFT]

هر جاشو که دیدین کد بهتری میشه نوشت رو بگین تغییر بدیم که به بهترین شکل برسه ;)
برنامه خیلی سادس ولی جاهایی که اشکال داشتین بپرسین :)
 

mojdeh-eng

عضو جدید
کاربر ممتاز
سلام به همه دوستان...
اولا ممنون که کدش رو گذاشتید....
من فکر کنم اگه از quick sortاستفاده کنیم مرتبه زمانیش کمتر میشه...
اما شرمنده الان موقع امتحاناته وقت نمیکنم کدش رو براتون بنویسم....
اگه کسی نوشت کدش رو بذاره که بقیه هم استفاده کنند...
موفق باشید...
باتشکر از همه دوستان....
 

gh_vm

عضو جدید
اینم یه راهشه
کد:
    public static void main(String[] args) {
        Comparator<Integer> coparator = new Comparator<Integer>() {


            @Override
            public int compare(Integer o1, Integer o2) {
                int x = o1.intValue();
                int y = o2.intValue();
                if(x < y) return 1;
                else if(x > y) return -1;
                else return 0;
            }
        };
        PriorityQueue<Integer> queue = new PriorityQueue<>(280, coparator);
        for(int i=1 ; i<=280 ; i++) {
            queue.add(new Integer(i));
        }
        for(int i=0 ; i<5 ; i++) {
            System.out.println(queue.poll().intValue());
        }
    }
 
آخرین ویرایش:

Similar threads

بالا