java升序排序代碼 一道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é)果。空間復(fù)雜度是k,時(shí)間復(fù)雜度是nlogk
如果你用set,它會簡單一點(diǎn)。對于字母表排序,Java comparator基本上就足夠了。如果遇到漢字排序,會比較麻煩,因?yàn)镴ava只能按拼音筆畫排序,很難按一、二、三、四排序。別胡說。下面是字母排序代碼列表a=new Arraylist()a.add(“a”)a.add(“m”)a.add(“d”)a.add(“e”)a.add(“C”)a.add(“H”)a.add(“J”)a.add(“W”)a.add(“s”)a.add(“Z”)//默認(rèn)排序?yàn)檎?排序(一)系統(tǒng)輸出打?。╝) //這是相反的順序收款.反向(一) 系統(tǒng)輸出打印(一)