算法篇三(查询数组中第二大的数)

查询数组中第二大的数

冒泡排序

一开始的想法是冒泡排序,就是遍历两遍,重新排列数组,然后取第二大的数
代码如下:

private int func1(int[] arr) {
    for (int i = 0; i <arr.length-1 ; i++) {
        for (int j = i+1; j <arr.length; j++) {
            if (arr[i] >= arr[j]) {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
    return arr[arr.length-2];
}
但是它的时间复杂度是O(n平方),有没有其他的方法  

其他方法

只需要一次遍历,因为我们并不需要将数组进行重排,只需要取数就好了,所以我们把数记下来,代码如下:

private int func(int[] arr) {
    int a = 0;
    int b = 0;
    for(int i = 0;i<arr.length-1;i++){
        if(arr[i]>a){
            b=a;
            a = arr[i];
        }
    }
    return b;


}

文章作者: Kobe-Liu1
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Kobe-Liu1 !
 上一篇
工作中遇到的问题(第七弹) 工作中遇到的问题(第七弹)
遇到的有意思的jar包lombok1.概念:lombok是一个可以通过简单的注解的形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,简单来说,比如我们新建了一个类,然后在其中写了几个字段,然后通常情况下我们需要手动去建立ge
2020-06-23 Kobe-Liu1
下一篇 
算法篇二(分治思想下的归并排序) 算法篇二(分治思想下的归并排序)
分治思想下的归并排序归并排序 1.归并思想:首先把一个数组中的元素,按照某一方法,先拆分了之后,按照一定的顺序各自排列,然后再归并到一起,使得归并后依然是有一定顺序的 。 2.归并排序算法可以利用递归的思想或者迭代的思想
2020-06-18 Kobe-Liu1
  目录