加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Quicksort按特定成员C对对象数组进行排序

发布时间:2020-12-16 10:28:34 所属栏目:百科 来源:网络整理
导读:class Foo{ public: int num; int other;};int main(){ Foo bar[10].num = {1,9,3,5,1,6,10,3}; //quicksort(bar) return 0;} 我想写一个quicksort函数,用’num’升序命令’bar’数组.不太清楚什么是最好的方法,因为我从来没有写过快速排序.我查看了一些示例
class Foo
{
    public:
        int num;
        int other;
};

int main()
{
    Foo bar[10].num = {1,9,3,5,1,6,10,3};

    //quicksort(bar)

    return 0;
}

我想写一个quicksort函数,用’num’升序命令’bar’数组.不太清楚什么是最好的方法,因为我从来没有写过快速排序.我查看了一些示例代码,但在这种情况下我无法看到如何修改它们.通过将指针传递给数组的第一个和最后一个元素来完成的就地排序不起作用,因为这只排序’num’成员,而不是整个对象.将对象数组拆分为较低的数组,一个数据透视图和一个上部数组,并递归排序每个看起来很有希望,但我不确定如何传递值将起作用…

任何帮助非常感谢.对不起,如果之前有人询问过.

解决方法

首先,您编写一个函数(或函子)来比较您想要的任何值的对象.它应该采取两个对象并返回一个布尔.如果第一个应该在第二个之前,它应该返回true,否则返回false.然后将其传递给std :: sort.

struct compare_Foo_by_num
{
    bool operator() (const Foo & lhs,const Foo & rhs) { return lhs.num < rhs.num; }
};

int main()
{
    Foo bar[10];

    std::sort(bar,bar+10,compare_Foo_by_num());
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读