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

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


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


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

       具体实施流程可以这样:

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

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



附上原作者的文章截图:









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值