您的位置:首页 > 职场人生

【有趣的面试算法题】之六 把正数集中的数排列成一个最小的数,最高位升序排列就好

2013-10-25 11:11 155 查看
在《剑指offer 名企面试官精讲典型编程题》中的面试题33:把数组排成最小的数, 并假定数值都为正。 作者提出一个复杂度为O(n*logn)的基于排序思路的方案,并对此给出了详细的代码及论证。

但是,我发现还可以进一步进行优化! 就是其比较函数中的具体实现中并不需要将两个数拼装之后再比较,而是直接比较两个数,可以省去大量的数据移动! 只是这时,需要自己写一个函数代替函数strcmp()。

新写的函数比较思路是:排在前面的数字应当小才是,于是总是比较两个数的较高位数字。

具体实施流程可以这样:

1,先比较两个数的最高位。如果两个数字不相同,直接返回结果;如果相同,则比较次高位。

2,如果两个数据长度不一,则较短的后续一直使用个位数字与较长的后续位进行比较。

附上原作者的文章截图:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐