日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Java Sort中Comparator的语义分析

發(fā)布時間:2025/7/14 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Sort中Comparator的语义分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Comparator中compare的語義: 接口約定返回值與o1,o2的相對大小的對應(yīng)關(guān)系, 即ret<0時,語義上等價于o1<o2; ret==0時,語義上等價于o1==o2; ret>0時,語義上等價于o1>o2. 具體Comparator子類override compare函數(shù)時,則需要依據(jù)約定,即采用o1-o2的策略 上述語義約定在排序算法上會有何影響呢?以JDK7為例,分析Collection.sort的內(nèi)部實現(xiàn) 闡述下sort與compare約定的關(guān)系。一般Comparator的用法如下: 其調(diào)用關(guān)系如下: 核心調(diào)用為 老版本使用歸并排序(屬于穩(wěn)定排序,性能弱于快排),新版本使用TimSort排序(一種改良的歸并排序算法,其算法復(fù)雜度為O(nlogn), 空間復(fù)雜度為n/2,在隨機數(shù)組中性能較優(yōu)),介紹如下: 此處不贅述這兩種算法的實現(xiàn)細節(jié),只關(guān)注comparator在排序中的語義作用。以傳統(tǒng)歸并實現(xiàn)為例: c.compare>0時交換dest[j-1]和dest[j],排序時有升序和降序之分,升還是降由compare的規(guī)則決定, 即,若compare(dest[j-1], dest[j])>0內(nèi)部規(guī)則為dest[j-1] > dest[j],導(dǎo)致small value在數(shù)組左側(cè),即升序; 若compare>0內(nèi)部規(guī)則為dest[j] > dest[j-1], 導(dǎo)致small value在數(shù)組右側(cè),即降序。 總結(jié)一下: 1.Collections.sort內(nèi)部采用(改良)歸并排序算法 2.Collections.sort排序算法定義了規(guī)則:compare<=0時value位置不變,compare>0時交換位置 3.compare(o1, o2)其中o1對應(yīng)dest[j-1],o2對應(yīng)dest[j],分別代表數(shù)組中相鄰比較的左右值 4.采用o1-o2方式結(jié)合排序內(nèi)部規(guī)則,導(dǎo)致升序,o2-o1導(dǎo)致降序

轉(zhuǎn)載于:https://www.cnblogs.com/tonybright/p/4903006.html

總結(jié)

以上是生活随笔為你收集整理的Java Sort中Comparator的语义分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。