卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

公認(rèn)最好的排序算法 一道java面試題,20億數(shù)字的文本排序,如何取前100?

一道java面試題,20億數(shù)字的文本排序,如何取前100?因?yàn)檫@是一個(gè)Java問題,所以這是典型的TOPK問題。首先取前100個(gè)數(shù)字構(gòu)建一個(gè)最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時(shí)調(diào)整堆。堆中最

一道java面試題,20億數(shù)字的文本排序,如何取前100?

因?yàn)檫@是一個(gè)Java問題,所以這是典型的TOPK問題。首先取前100個(gè)數(shù)字構(gòu)建一個(gè)最小堆,然后依次從堆的頂部插入剩余的數(shù)字,同時(shí)調(diào)整堆。堆中最后100個(gè)元素就是結(jié)果??臻g復(fù)雜度是k,時(shí)間復(fù)雜度為nlogk

排序算法有:冒泡排序-O(n^2)雞尾酒排序-O(n^2)插入排序-O(n^2)桶排序-O(n)O(k)計(jì)數(shù)排序-O(n k)O(n k)O(n k)合并排序-O(NLog n)需要O(n)額外空間合并排序-O(n^2)二叉樹排序-O(NLog n)期望時(shí)間;O(n^2)最差時(shí)間時(shí)間;鴿子洞排序-O(nk)需要O(k)額外的空間

這個(gè)問題的最佳時(shí)間復(fù)雜度是O(n)。所以如果一定要使用排序算法,如果標(biāo)題條件允許,請盡量選擇o(n)排序算法如bucket排序。另一種解決方案是構(gòu)建一個(gè)大小為10的堆,按順序遍歷數(shù)組,并在堆滿時(shí)移除最上面的元素。這樣,最多可獲得10個(gè)元素。時(shí)間復(fù)雜度為O(nlog10)。