关于algorithm的sort函数

  sort函数是我们算法比赛中最简单的最快的一个算法,他的时间复杂度是nlogn,最坏的时候是n^2,基本思想是快速排序,但是被封装的时候进行了许多优化,所以基本达不到n^2的速度

  那么我们如何使用好这个东西是一个非常关键的问题,因为我们打比赛的时候,可以说是不可能写出比sort还快的排序算法

  用好sort我们需要学好如何重构(operator)和写cmp函数

  其实,鄙人觉得,cmp和operator都是一个事,都是在排序的关键值上做文章,operator的用法,我也写过一篇bk来简单介绍了他的用法,在这里就不做过多介绍,cmp的用法和operator换汤不换药,operator用好了,cmp也就会了,下面我总结两个小的知识点,用处不大,当做扩展知识面,日后可能有用

  1.friend,对于系统学过C++的同学可能很熟悉,但对于软外的同学,可能比较陌生,这个东西加在类和函数前面,将其变成友元函数或者友元类,如果你的operator写在了结构体里面,那么不加friend,外界是无法访问的,当然你也可以写一个全局的operator,但是坏处长着脑子的都知道,你写成全局的话,关键值从始至终就只是那一个了,不太灵活就,自己体会吧

  2.排序经常给object排序,有的时候用到printf以%s的形式输出string类型的value,比如 string value,我们不能直接写printf("%s\n",value),我们应该写printf("%s\n",value.c_str());这是因为C++是C的发展,需要兼容,C里面是不包括string的,所以在C++中的string类中,写了c_str()这个函数,用来返回C的指针所指向的字符串,大体这么个意思,方便记忆,这里也说一下我怎么记这个函数名字的,因为你要兼容C语言,你打的是C++,所以你是不是方法得有个c啊,是不是说你是让c兼容的啊,是不是我们是对str进行操作,所以c_str()这个名不就出来了吗,我真是个小天才

发布了35 篇原创文章 · 获赞 0 · 访问量 929

猜你喜欢

转载自blog.csdn.net/ACM_Cmy/article/details/104012068
今日推荐