對一個已知數組array('1','3','100','5','99','2'); 數組個數為1000000000;里面值是無序的,進行排序,找出第二大的數。要求:用時最少的排序算法。
語言不限。
指導指導。
6 回答

米脂
TA貢獻1836條經驗 獲得超3個贊
如果不用原生排序的話,可以用快排,至于最快也沒辦法直接肯定,快排還是存在不穩定因素
function qSort(list) {
if (list.length == 0) {
return [];
}
var lesser = [];
var greater = [];
var pivot = list[0];
for (var i = 1; i < list.length; i++) {
if (list[i] < pivot) {
lesser.push(list[i]);
} else {
greater.push(list[i]);
}
}
return qSort(lesser).concat(pivot, qSort(greater));
}

守著星空守著你
TA貢獻1799條經驗 獲得超8個贊
function findTheSecondLargestNumber(arr) {
if (arr.length < 2) {
throw 'the number of the array is less than 2'
}
let largestNum = -Infinity, secondLargestNum = -Infinity;
arr.forEach(item => {
if (item > largestNum) {
[largestNum, secondLargestNum] = [item, largestNum]
} else if (item > secondLargestNum) {
secondLargestNum = item;
}
})
return secondLargestNum
}
console.log(findTheSecondLargestNumber(['1','3','100','5','99','2']))
console.log(findTheSecondLargestNumber([]))
維護最大值和次大值即可
- 6 回答
- 0 關注
- 437 瀏覽
添加回答
舉報
0/150
提交
取消