当前位置:  开发笔记 > 编程语言 > 正文

太空船运营商什么时候在外面使用?

如何解决《太空船运营商什么时候在外面使用?》经验,为你挑选了2个好方法。

这是一个最佳实践问题.

我只见过数字排序例程中使用的Perl太空飞船运算符(<=>).但它在其他情况下似乎很有用.我只是想不出实际用途.

任何人都可以举例说明它何时可以在Perl排序之外使用?



1> P Shved..:

我正在为机器人乔编写一个控制系统,想要去机器人玛丽并给她充电.它们沿着线上的整数点移动.Joe从$ j开始,每个时间单位可以向任何方向行走1米.玛丽仍站在$ m,无法动弹 - 她需要充好的充电!控制程序看起来像这样:

while ($m != $j) {
    $j += ($m <=> $j);
}



2> Michael Carm..:

<=>运营商将是一个有用的二进制搜索算法.大多数编程语言都没有进行三向比较的运算符,这使得每次迭代需要进行两次比较.有了<=>你可以做只有一个.

sub binary_search {
    my $value = shift;
    my $array = shift;
    my $low   = 0;
    my $high  = $#$array;

    while ($low <= $high) {
        my $mid = $low + int(($high - $low) / 2);

        given ($array->[$mid] <=> $value) {
            when (-1) { $low  = $mid + 1 }
            when ( 1) { $high = $mid - 1 }
            when ( 0) { return $mid      }
        }
    }

    return;
}

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有