مرتب سازی بهینه - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مرتب سازی بهینه

0 امتیاز
سلام.آیا تو c++11 راهی وجود داره که بتونیم فقط n تا عنصر مرتب بشه به فرض n تا بیشترین یا n کمترین اول را فقط مرتب کنه و مرتب سازی را برای کل لیست ادامه نده؟
سوال شده تیر 11, 1396  بوسیله ی hojat1 (امتیاز 875)   12 68 99
دوباره تگ گذاری شد تیر 11, 1396

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

برای اینکار از تابع std::partialsort استفاده کنید به مثال زیر توجه کنید.

#include <algorithm>
#include <functional>
#include <array>
#include <iostream>
 
int main()
{
    std::array<int, 10> s{5, 7, 4, 2, 8, 6, 1, 9, 0, 3};
 
    std::partial_sort(s.begin(), s.begin() + 3, s.end());
    for (int a : s) {
        std::cout << a << " ";
    } 
}
خروجی :
0 1 2 7 8 6 5 9 4 3

 

پاسخ داده شده تیر 12, 1396 بوسیله ی farnoosh (امتیاز 8,362)   20 44 59
انتخاب شد تیر 14, 1396 بوسیله ی hojat1
...