算法练习(70): 最遥远的一对(1.4.17)

本系列博客习题来自《算法(第四版)》,算是本人的读书笔记,如果有人在读这本书的,欢迎大家多多交流。为了方便讨论,本人新建了一个微信群(算法交流),想要加入的,请添加我的微信号:zhujinhui207407 谢谢。另外,本人的个人博客 http://www.kyson.cn 也在不停的更新中,欢迎一起讨论

算法(第4版)

知识点

  • 最遥远的一对

题目

1.4.17 最遥远的一对(一维)。编写一个程序,给定一个含有 N 个 double 值的数组 a[],在其中找到一对最遥远的值:两者之差(绝对值)最大的两个数。程序在最坏情况下所需的运行时间应该是线性级别的。


1.4.17 Farthest pair (in one dimension). Write a program that, given an array a[] of N double values, finds a farthest pair : two values whose difference is no smaller than the the difference of any other pair (in absolute value). The running time of your program should be linear in the worst case.

分析

这道题的解法跟上道题差不多,很容易就能解出来。

public class FastestPair {
    public static void fastestPair(double[] x)
    {
        System.out.println("最遥远的两个数为:"+x[0]);
        System.out.println("和:"+x[x.length- 1]);
    }
    
    public static void main(String[] args){
        double[] a = {1,2,3,4,5,888,76,45};
        Arrays.sort(a);
        fastestPair(a);
    }
}

以上代码的地址:FastestPair.java
同样,跟题目的要求不匹配,为何?因为这个算法复杂度是常数级别。因为一旦调用了Arrays.sort(a)后,直接取最大值最小值即可。那怎么符合“线性”复杂度呢,还是要加层循环。

答案

public class FastestPairLinear {
    public static void fastestPairLinear(double[] x)
    {
        double max = Double.MIN_VALUE;
        double min = Double.MAX_VALUE;
        for (int i = 0; i < x.length; i++) {
            if (x[i] >= max) {
                max = x[i];
            }
            if (x[i] < min) {
                min = x[i];
            }
        }
        System.out.println("最遥远的两个数为:"+max);
        System.out.println("和:"+min);
    }
    
    public static void main(String[] args) {
        double[] a = {1,2,3,4,5,888,76,45};
        fastestPairLinear(a);
    }
}

代码索引

FastestPairLinear.java

广告

我的首款个人开发的APP壁纸宝贝上线了,欢迎大家下载。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • **2014真题Directions:Read the following text. Choose the be...
    又是夜半惊坐起阅读 9,868评论 0 23
  • 当得知高二四班获得优秀班级称号,陆梅心里真是百感交集。 回想起过去的一年,自己的努力,学生的改变,家长的配合,年级...
    思彤lu阅读 331评论 0 3
  • 时光摇摇晃晃 哔哔剥剥 但在某一时刻停顿不语—— 夏至日 就这么到了。 你不必看原野 有无数明媚的...
    当今麦田阅读 219评论 0 2
  • 总有人喜欢在阳光明媚的天气消失 带着别人的美丽,别人的幻想 就那样在并不刺眼的阳光日子里没了消息 能怎么办呢?除了...
    姓什么丶阅读 221评论 0 1