欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開(kāi)發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

你見(jiàn)過(guò)哪些看似簡(jiǎn)單但卻非常精妙的代碼?

admin
2024年7月24日 23:12 本文熱度 721

🎈在編程的世界里,簡(jiǎn)潔的代碼往往隱藏著深邃的智慧。一起來(lái)看看那些看似簡(jiǎn)單,實(shí)則精妙絕倫的代碼片段,體會(huì)編程語(yǔ)言的優(yōu)雅與力量。

1、樹(shù)狀數(shù)組

int lowbit(int x)
{  
    return x&-x;  
}  

樹(shù)狀數(shù)組里的這個(gè),太精妙了,樹(shù)狀數(shù)組使區(qū)間求和復(fù)雜度降低到了log(n),發(fā)明這段代碼的人一定是個(gè)天才,而這個(gè)lowbit恰恰是最精妙的一部分,可以準(zhǔn)確的找到我們需要加的部分,巧妙的利用了計(jì)算機(jī)的位運(yùn)算。

我一直覺(jué)得線段樹(shù),樹(shù)分治這幾個(gè)算法的設(shè)計(jì)都很精妙

當(dāng)初學(xué)樹(shù)狀數(shù)組的,看到這個(gè)函數(shù)也驚嘆了許久,甚是巧妙

2、紅黑樹(shù)

(defun rbt-balance (tree)
  "Balance the rbtree list TREE."
  (pcase tree
    (`(B (R (R ,a ,x ,b) ,y ,c) ,z ,d) `(R (B ,a ,x ,b) ,y (B ,c ,z ,d)))
    (`(B (R ,a ,x (R ,b ,y ,c)) ,z ,d) `(R (B ,a ,x ,b) ,y (B ,c ,z ,d)))
    (`(B ,a ,x (R (R ,b ,y ,c) ,z ,d)) `(R (B ,a ,x ,b) ,y (B ,c ,z ,d)))
    (`(B ,a ,x (R ,b ,y (R ,c ,z ,d))) `(R (B ,a ,x ,b) ,y (B ,c ,z ,d)))
    (_                                 tree)))

(defun rbt-insert- (x s)
  "Auxilary function of rbt-insert."
  (pcase s
    (`nil              `(R nil ,x nil))
    (`(,color ,a ,y ,b) (cond ((< x y)
                               (rbt-balance `(,color ,(rbt-insert- x a) ,y ,b)))
                              ((> x y)
                               (rbt-balance `(,color ,a ,y ,(rbt-insert- x b))))
                              (t
                               s)))
    (_                  (error "Expected tree: %S" s))))

(defun rbt-insert (x s)
  "Insert S to rbtree X."
  (pcase (rbt-insert- x s)
    (`(,_ ,a ,y ,b) `(B ,a ,y ,b))
    (_              (error "Internal error: %S" s))))

elisp寫(xiě)的紅黑樹(shù),可以說(shuō)非常經(jīng)典了。

簡(jiǎn)單的是elisp,精妙的是紅黑樹(shù)

3、星星打分

function getRating(rating{
    if(rating > 5 || rating < 0throw new Error('數(shù)字不在范圍內(nèi)');
    return '★★★★★☆☆☆☆☆'.substring(5 - rating, 10 - rating );
}

這種實(shí)現(xiàn)方式之所以精妙,是因?yàn)樗昧俗址墓潭J胶?substring 方法的靈活性來(lái)生成不同數(shù)量的星星,而不需要使用循環(huán)或額外的邏輯來(lái)逐個(gè)添加或刪除星星。這種方法簡(jiǎn)潔且高效,特別是在需要頻繁生成星級(jí)評(píng)分表示時(shí)。

然而,這段代碼也有局限性,它假設(shè)評(píng)分總是整數(shù),并且只支持0到5的評(píng)分范圍。如果需要支持小數(shù)評(píng)分或更廣泛的評(píng)分范圍,這段代碼將需要相應(yīng)的調(diào)整。

4、歐幾里得算法

function gcd(a, b{
    return b ? gcd(b, a % b) : a; 
}

這種遞歸實(shí)現(xiàn)的歐幾里得算法非常簡(jiǎn)潔且高效。它利用了數(shù)學(xué)上的一個(gè)性質(zhì):兩個(gè)整數(shù)的最大公約數(shù)與它們的余數(shù)和較小數(shù)的最大公約數(shù)相同。即 gcd(a, b) = gcd(b, a % b)。

5、快速冪

function fastPower(b, n{
    if (n === 0return 1;
    const result = fastPower(b, Math.floor(n / 2));
    return n % 2 === 0 ? result * result : b * result * result;
}

用于高效地計(jì)算 b 的 n 次方。快速冪算法特別適用于計(jì)算大冪次的情況,因?yàn)樗鼘绱蔚挠?jì)算復(fù)雜度從 O(n) 降低到 O(log n)。

6、并查集

int find(int x){
  x==parent[x]?:find(parent[x]);
}

并查集(Union-Find)數(shù)據(jù)結(jié)構(gòu)中的 find 函數(shù)的簡(jiǎn)潔實(shí)現(xiàn)。

遞歸查找:find 函數(shù)通過(guò)遞歸的方式查找元素 x 的根節(jié)點(diǎn)。遞歸會(huì)在元素與其父節(jié)點(diǎn)不同時(shí),繼續(xù)查找父節(jié)點(diǎn)的父節(jié)點(diǎn),直到找到一個(gè)元素其父節(jié)點(diǎn)是它自己的元素,即根節(jié)點(diǎn)。

路徑壓縮:代碼中的三元運(yùn)算符 ?: 實(shí)現(xiàn)了路徑壓縮技術(shù)。當(dāng) x 不是其根節(jié)點(diǎn)時(shí)(即 x != parent[x]),find 函數(shù)會(huì)調(diào)用自身并傳入 parent[x] 作為參數(shù)。在遞歸返回的過(guò)程中,每個(gè)節(jié)點(diǎn)的父節(jié)點(diǎn)指針都被更新為最終的根節(jié)點(diǎn),這樣可以減少后續(xù)查找操作的深度。


該文章在 2024/7/24 23:12:37 編輯過(guò)
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車(chē)隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開(kāi)發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類(lèi)企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷(xiāo)售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved