為什么快速排序不適合用鏈表 一道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
首先,它是一種排序算法。排序算法是將無序數(shù)據(jù)組合轉(zhuǎn)化為有序數(shù)據(jù)組合。有序數(shù)據(jù)組合的最大優(yōu)點(diǎn)是,當(dāng)你定位和采用數(shù)據(jù)時(shí),會(huì)非常方便,因?yàn)閿?shù)據(jù)是有序的,所以你可以避免代碼設(shè)計(jì)中很多不必要的麻煩,因?yàn)楫?dāng)你推斷數(shù)據(jù)之間的關(guān)系時(shí)會(huì)顯示無序的數(shù)據(jù)快速排序是一種排序,在最壞的情況下,它與其他排序方法沒有什么不同,但在最好的情況下,它將比一般的排序方法節(jié)省更多的時(shí)間。這里的一般排序是指:bubble、hill、insert等常規(guī)排序方法。其實(shí)我比較喜歡插入,但是對于鏈表操作來說比較方便,因?yàn)椴僮髌饋肀容^容易