查询数组中第二大的数
冒泡排序
一开始的想法是冒泡排序,就是遍历两遍,重新排列数组,然后取第二大的数
代码如下:
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;
}