نمایش نتایج: از شماره 1 تا 5 , از مجموع 5

موضوع: یافتن بزرگترین اعداد در آرایه ای از اعداد

  1. #1
    عضو انجمن
    تاریخ عضویت
    Sep 2017
    نوشته ها
    102
    تشکر تشکر کرده 
    90
    تشکر تشکر شده 
    24
    تشکر شده در
    22 پست

    Question یافتن بزرگترین اعداد در آرایه ای از اعداد

    سلام و درود

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

    به طور مثال آرایه ای به شکل زیر دارم:
    کد PHP:
    [1015171914102515113328
    به عنوان مثال در آرایه بالا بتونه الگوریتم بهم اعداد 19 و 25 و 33 رو بده.
    بخوام دقیق تر توضیح بدم خدمت شما به این شکل که بزرگترین اعداد رو به صورت بازه ای میخوام نه بزرگترین عدد کل آرایه که اینجا میشه 33. بازم بخوام بیشتر بگم عدد بزرگی رو میخوام که بعدش اعداد از اونجا کوچیک شدن.
    امیدوارم متوجه شده باشید.
    ممنون میشم اگر الگوریتمی برای تشخیص این مورد دارید یا به ذهنتون میرسه راهنمایی کنید.

    سپاس

  2. # ADS




     

  3. #2
    عضو انجمن
    تاریخ عضویت
    Sep 2010
    نوشته ها
    713
    تشکر تشکر کرده 
    566
    تشکر تشکر شده 
    1,153
    تشکر شده در
    790 پست

    پیش فرض پاسخ : یافتن بزرگترین اعداد در آرایه ای از اعداد

    کد PHP:
    asort($arr);
    $result array_slice($arr, -33); 
    این برای مثلا 3 تا بزرگترین اعداد

    برای باقی مانده ی اعداد هم
    کد PHP:
    arsort($arr);
    $result2 array_slice($arr3); 
    اگر درست متوجه شده باشم منظورتون رو . اگر نه که مثال بزنید
    ویرایش توسط hoka : April 30th, 2020 در ساعت 18:39

  4. تعداد تشکر ها از hoka به دلیل پست مفید


  5. #3
    عضو انجمن
    تاریخ عضویت
    Sep 2017
    نوشته ها
    102
    تشکر تشکر کرده 
    90
    تشکر تشکر شده 
    24
    تشکر شده در
    22 پست

    پیش فرض پاسخ : یافتن بزرگترین اعداد در آرایه ای از اعداد

    نقل قول نوشته اصلی توسط hoka نمایش پست ها
    کد PHP:
    asort($arr);
    $result array_slice($arr, -33); 
    این برای مثلا 3 تا بزرگترین اعداد

    برای باقی مانده ی اعداد هم
    کد PHP:
    arsort($arr);
    $result2 array_slice($arr3); 
    اگر درست متوجه شده باشم منظورتون رو . اگر نه که مثال بزنید
    درود بر شما و تشکر بابت پاسختون.

    نمونه من به عنوان مثال بود و تعداد این اعداد 2-3 هزارتاست و اصلا تعداد اعدادی که شرایط رو دارن مشخص نیست توی نمونه من 3 تا بود.
    در کل فرمولی که میتونم بگم اینه که اعداد به صورت افزایشی میشن بعد به یه قله ای میرسن از اونجا میان پایین اون نقطه قله میشه یکی از بزرگترین اعداد ما همین طوری توی آرایه پیش بری تعداد این اعداد شاید 100 تا هم باشه.

  6. #4
    عضو انجمن
    تاریخ عضویت
    Mar 2013
    نوشته ها
    157
    تشکر تشکر کرده 
    34
    تشکر تشکر شده 
    251
    تشکر شده در
    159 پست

    پیش فرض پاسخ : یافتن بزرگترین اعداد در آرایه ای از اعداد

    این یک نمونه خیلی ساده هست نوشتم، باید تست اش کنی، شاید تو موارد خاص مشکل داشته باشه.

    کد:
    function biggest_numbers($numbers_list) {
      $last_number = NULL;
      $big_numbers = [];
      foreach ($numbers_list as $number) {
        if ($number != NULL && $number < $last_number) {
          array_push($big_numbers, $last_number);
          $last_number = NULL;
        } else {
          $last_number = $number;
        }
      }
      return $big_numbers;
    }
    
    
    $list = [-15,-1,0,-1,10, 15, 17, 19, 14, 10, 25, 15, 11, 33, 28];
    print_r(biggest_numbers($list));
    
    // output
    Array
    (
        [0] => 0
        [1] => 19
        [2] => 25
        [3] => 33
    )
    ویرایش توسط firebox : April 30th, 2020 در ساعت 23:14

  7. تعداد تشکر ها ازfirebox به دلیل پست مفید


  8. #5
    عضو انجمن
    تاریخ عضویت
    Sep 2017
    نوشته ها
    102
    تشکر تشکر کرده 
    90
    تشکر تشکر شده 
    24
    تشکر شده در
    22 پست

    پیش فرض پاسخ : یافتن بزرگترین اعداد در آرایه ای از اعداد

    نقل قول نوشته اصلی توسط firebox نمایش پست ها
    این یک نمونه خیلی ساده هست نوشتم، باید تست اش کنی، شاید تو موارد خاص مشکل داشته باشه.

    کد:
    function biggest_numbers($numbers_list) {
      $last_number = NULL;
      $big_numbers = [];
      foreach ($numbers_list as $number) {
        if ($number != NULL && $number < $last_number) {
          array_push($big_numbers, $last_number);
          $last_number = NULL;
        } else {
          $last_number = $number;
        }
      }
      return $big_numbers;
    }
    
    
    $list = [-15,-1,0,-1,10, 15, 17, 19, 14, 10, 25, 15, 11, 33, 28];
    print_r(biggest_numbers($list));
    
    // output
    Array
    (
        [0] => 0
        [1] => 19
        [2] => 25
        [3] => 33
    )
    سپاسگزارم کد خوبی بود.
    فقط اون قسمت اول if فک کنم میخواستید last_number رو چک کنید اشتباها number رو چک کردید null نبودنش رو.
    ولی عالی بود.

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

مجوز های ارسال و ویرایش

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