亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數組排序問題

數組排序問題

PHP
江戶川亂折騰 2019-03-15 19:25:25
對一個已知數組array('1','3','100','5','99','2'); 數組個數為1000000000;里面值是無序的,進行排序,找出第二大的數。要求:用時最少的排序算法。 語言不限。 指導指導。
查看完整描述

6 回答

?
蝴蝶不菲

TA貢獻1810條經驗 獲得超4個贊

就用冒泡排序不就ok了。你百度一下js的冒泡排序

查看完整回答
反對 回復 2019-03-18
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

如果只是要找出第二大的數,根本不需要排序啊。O(N) 啊~

查看完整回答
反對 回復 2019-03-18
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

你要找出第二大的數字,只需要維護最大值和第二大的值即可,對數組進行遍歷,遍歷一次就可以得到這兩個值,這個操作的時間復雜度就是O(N).

查看完整回答
反對 回復 2019-03-18
?
米脂

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));
}
查看完整回答
反對 回復 2019-03-18
?
守著星空守著你

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([]))

維護最大值和次大值即可

查看完整回答
反對 回復 2019-03-18
  • 6 回答
  • 0 關注
  • 437 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號