var arr = [1, 2, 34, 5, 43, 23, 54];
console.log(findMax(arr));
function findMax(arr) {
var max, min, temp1, temp2, result = [];
if (arr.length <= 1) {
return arr;
}
if (arr.length == 2) {
if (arr[0] > arr[1]) {
result.push(arr[0]);
result.push(arr[1]);
} else {
result.push(arr[1]);
result.push(arr[0]);
}
return result;
}
if (arr[0] > arr[1]) {
max = arr[0];
min = arr[1];
} else {
max = arr[1];
min = arr[0];
}
for (var i = 0, len = arr.length; i < len; i = i + 2) {
temp1 = arr[i];
temp2 = arr[i + 1];
if (temp1) {
if (temp2) {
if (temp1 <= temp2) {
if (temp1 < min)min = temp1;
if (temp2 > max)max = temp2;
} else {
if (temp2 < min)min = temp2;
if (temp1 > max)max = temp1;
}
} else {
if (temp1 < min)min = temp1;
if (temp1 > max)max = temp1;
}
}
}
result.push(max);
result.push(min);
return result;
}
控制台输出:
[54, 1]
比较次数1.5*N次