日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

careercup-高等难度 18.6

發布時間:2023/12/10 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 careercup-高等难度 18.6 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

18.6 設計一個算法,給定10億個數字,找出最小的100萬個數字。假定計算機內存足以容納全部10億個數字。

解法:

方法1:排序

按升序排序所有的元素,然后取出前100萬個數,時間復雜度為O(nlog(n))

方法2:大頂堆

我們可以使用大頂堆來解題。首先,為前100萬個數字創建一個大頂堆

然后,遍歷整個數列,將每個元素插入大頂堆,并刪除最大的元素。

遍歷結束后,我們將得到一個堆,剛好包含最小的100萬個數字。這個算法的時間復雜度為O(nlog(m)),其中m為待查找數值的數量。

方法3:選擇排序算法(假如你可以改變原始數組)

在計算機科學中,選擇排序是個很有名的算法,可以在線性時間內找到數組中第i個最小(或最大)元素。

如果這些元素各不相同,則可以在預期的O(n)時間內找到第i個最小的元素。

?

轉載于:https://www.cnblogs.com/wuchanming/p/4362389.html

總結

以上是生活随笔為你收集整理的careercup-高等难度 18.6的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。