求二维极大点问题的C/C++实现
分治算法的一个应用。二维极大点问题:在一个点集中,如果一个点A的横坐标、纵坐标大于点B的横坐标、纵坐标,那么就说点A支配点B。如果一个点没有被其他点支配,则称这个点是极大者(maxima)。找出一个点集中所有的极大者。(maxima fiding problem)。自己试着写了一个,感觉太垃圾(不值得贴了),求哪位大牛指导(思想已知,感觉编程比较吃力)。
[解决办法]
我想了一个,先按照横坐标从小到大排序.
然后对序列从右到左做一次O(n)的扫描,扫描过程中记录maxHeight,表示到当前点右边的最高纵坐标.
如果curHeight<maxHeight,那说明右边有点比cur点高,cur被支配.
如果curHeight>maxHeight,那说明cur高于右边的一切点,没有被支配.
复杂度O(nlgn)
[解决办法]