diff --git a/Code/Code.vcxproj b/Code/Code.vcxproj index 97588d6..13aa75f 100644 --- a/Code/Code.vcxproj +++ b/Code/Code.vcxproj @@ -153,6 +153,7 @@ + diff --git a/Code/sort.h b/Code/sort.h new file mode 100644 index 0000000..1ac57a9 --- /dev/null +++ b/Code/sort.h @@ -0,0 +1,79 @@ +#include +#include +#include "head.h" + +// 直接插入排序 +int DirectInsertSort(element_type data[], int length) { + int i, j; + element_type temp; + // 循环遍历数组 + for (i = 1; i < length; i++) { + // 若data[i]关键字小于前一个 + if (data[i] < data[i - 1]) { + // 用temp暂存data[i] + temp = data[i]; + // 检查所有前面已经排好序的元素 + for (j = i - 1; j >= 0 && data[j] > temp; --j) { + // 若元素大于temp则后移一位 + data[j + 1] = data[j]; + } + // 赋值到插入位置 + data[j + 1] = temp; + } + } + return 0; +} + +// 折半查找排序 +int BinaryInsertSort(element_type data[], int length) { + int i, j, low, high, mid; + // 依次将data[2]到data[n-1]插入到前面已经排序的序列中 + for (i = 2; i <= length; i++) { + // 将data[i]暂存到data[0] + data[0] = data[i]; + // 设置折半查找的范围 + low = 1; + high = i - 1; + while (low <= high) { + // 取中间点 + mid = (low + high) / 2; + if (data[mid] > data[0]) { + // 查找左半子表 + high = mid - 1; + } + else { + // 查找右半子表 + low = mid + 1; + } + } + // 统一后移元素,空出插入位置 + for (j = 1; j >= high + 1; --j) { + data[j + 1] = data[j]; + } + // 插入元素 + data[high + 1] = data[0]; + } + return 0; +} + +// 希尔排序 +int ShellSort(element_type data[], int length) { + // d代表当前处理的增量值 + int d, i, j; + // data[0]只是暂存数据,等j<=0时就到了插入位置 + for (d = length / 2; d >= 1; d = d / 2) { + for (i = d + 1; i <= length; ++i) { + // 需要将data[i]插入到有序增量子表 + if (data[i] < data[i - d]) { + // 暂存到data[0]中 + data[0] = data[i]; + for (j = i - d; j > 0 && data[0] < data[j]; j -= d) { + // 记录后移,寻找插入的位置 + data[j + d] = data[j]; + } + // 插入数据 + data[j + d] = data[0]; + } + } + } +} \ No newline at end of file diff --git a/Data-Structrue/search.md b/Data-Structrue/search.md index c3e4515..55d8c57 100644 --- a/Data-Structrue/search.md +++ b/Data-Structrue/search.md @@ -190,3 +190,68 @@ B+鏍戝彲浠ラ『搴忔煡鎵撅紝鍦ㄥ彾瀛愮粨鐐圭殑鍧椾箣闂村畾涔夋寚鍚戝悗闈㈠彾瀛愮粨 ## 鏁e垪琛ㄦ煡鎵 ### 鏁e垪琛ㄥ畾涔 + +鏁e垪琛ㄥ張绉板搱甯岃〃锛屾槸涓绉嶆暟鎹粨鏋勶紝鏁版嵁鍏冪礌鐨勫叧閿瓧涓庡叾瀛樺偍鍦板潃鐩存帴鐩稿叧銆備竴涓暎鍒楃粨鏋勬槸涓鍧楀湴鍧杩炵画鐨勫瓨鍌ㄧ┖闂淬 + +### 鏁e垪鍑芥暟 + +鍏抽敭瀛椾笌鍦板潃閫氳繃鏁e垪鍑芥暟锛堝搱甯屽嚱鏁帮級鏉ュ疄鐜版槧灏勩傚嵆璁板綍浣嶇疆=鏁e垪鍑芥暟(璁板綍鍏抽敭瀛)銆 + ++ 鐩存帴瀹氬潃娉曪細鍙〃绀轰负鏁e垪鍑芥暟(鍏抽敭瀛)=a*鍏抽敭瀛+b锛屽叾涓璦銆乥鍧囦负甯告暟銆傝繖绉嶆柟娉曡绠楃壒鍒畝鍗曪紝骞朵笖涓嶄細鍙戠敓鍐茬獊锛屼絾褰撳叧閿瓧鍒嗗竷涓嶈繛缁椂锛屼細鍑虹幇寰堝绌洪棽鍗曞厓锛屼細灏嗛犳垚澶ч噺瀛樿串鍗曞厓鐨勬氮璐广 ++ 鏁板瓧鍒嗘瀽娉曪細鍒嗘瀽鍏抽敭瀛楃殑鍚勪釜浣嶇殑鏋勬垚锛屾埅鍙栧叾涓嫢骞蹭綅浣滀负鏁e垪鍑芥暟鍊硷紝灏藉彲鑳戒娇鍏抽敭瀛楀叿鏈夊ぇ鐨勬晱鎰熷害锛屽嵆鏈鑳借繘琛屽尯鍒嗙殑鍏抽敭瀛椾綅锛岃繖浜涗綅鏁伴兘鏄繛缁殑銆 ++ 骞虫柟鍙栦腑娉曪細鍏堟眰鍏抽敭瀛楃殑骞虫柟鍊硷紝鐒跺悗鍦ㄥ钩鏂瑰间腑鍙栦腑闂村嚑浣嶄负鏁e垪鍑芥暟鐨勫笺傚洜涓轰竴涓暟骞虫柟鍚庣殑涓棿鍑犱綅鍜屽師鏁扮殑姣忎竴浣嶉兘鐩稿叧锛屽洜姝わ紝浣跨敤闅忔満鍒嗗竷鐨勫叧閿瓧寰楀埌鐨勮褰曠殑瀛樺偍浣嶇疆涔熸槸闅忔満鐨勩傞傜敤浜庡叧閿瓧鐨勬瘡浣嶅彇鍊奸兘涓嶅鍧囧寑鎴栧潎灏忎簬鏁e垪鍦板潃鎵闇鐨勪綅鏁般 ++ 鎶樺彔娉曪細灏嗗叧閿瓧鍒嗗壊鎴愪綅鏁扮浉鍚岀殑鍑犻儴鍒(鏈鍚庝竴閮ㄥ垎鐨勪綅鏁板彲浠ヤ笉鍚)锛岀劧鍚庡彇杩欏嚑閮ㄥ垎鐨勫彔鍔犲拰(鑸嶅幓杩涗綅)浣滀负鏁e垪鍑芥暟鐨勫硷紝绉颁负鎶樺彔娉曘備緥濡傦紝鍋囪鍏抽敭瀛椾负鏌愪汉韬唤璇佸彿鐮430104681015355锛屽垯鍙互鐢4浣嶄负涓缁勮繘琛屽彔鍔狅紝鍗虫湁5355锛8101锛1046锛430锛14932锛岃垗鍘婚珮浣嶏紝鍒欐湁H(430104681015355)锛4932銆 ++ 闅忔満鏁版硶锛氬浜庡瓨鍌ㄤ綅缃粰瀹氶殢鏈烘暟瀹夋帓锛屾煡鎵捐捣鏉ヤ細寰堥夯鐑︺ ++ 闄ょ暀浣欐暟娉曪細鏁e垪鍑芥暟(鍏抽敭瀛)=鍏抽敭瀛%p锛宲涓鑸槸涓嶅ぇ浜庤〃闀跨殑鏈澶ц川鏁般傝繖绉嶆柟娉曚娇鐢ㄨ緝澶氾紝鍏抽敭鏄夊彇杈冪悊鎯崇殑p鍊硷紝浣垮緱姣忎竴涓叧閿瓧閫氳繃璇ュ嚱鏁拌浆鎹㈠悗鏄犲皠鍒版暎鍒楃┖闂翠笂浠讳竴鍦板潃鐨勬鐜囬兘鐩哥瓑锛屼粠鑰屽敖鍙兘鍑忓皯鍙戠敓鍐茬獊鐨勫彲鑳芥с備竴鑸儏褰笅锛屽彇p涓轰竴涓礌鏁拌緝鐞嗘兂锛屽鏋滄槸鍚堟暟鍒欏洜涓哄彲浠ヨ澶氫釜鏁版暣闄や粠鑰屽涓叧閿瓧浣欐暟鐩稿悓閫犳垚鍐茬獊銆 + +### 鏄犲皠鍐茬獊 + +涓鑸儏鍐典笅锛岃璁″嚭鐨勬暎鍒楀嚱鏁板緢闅炬槸鍗曞皠鐨勶紝鍗充笉鍚岀殑鍏抽敭瀛楀搴斿埌鍚屼竴涓瓨鍌ㄤ綅缃紝杩欐牱灏遍犳垚浜嗗啿绐侊紙纰版挒锛夈傛鏃讹紝鍙戠敓鍐茬獊鐨勫叧閿瓧浜掍负鍚屼箟璇嶃 + +#### 寮鏀惧湴鍧娉 + +鍙瓨鏀炬柊琛ㄩ」鐨勭┖闂插湴鍧鏃㈠悜鍚屼箟璇嶅紑鏀惧彾鍚戦潪鍚屼箟璇嶅紑鏀俱備粠鍙戠敓鍐茬獊鐨勯偅涓崟鍏冨紑濮嬶紝鎸夌収涓瀹氱殑娆″簭锛屼粠鍝堝笇琛ㄤ腑鎵惧嚭涓涓┖闂茬殑瀛樺偍鍗曞厓锛屾妸鍙戠敓鍐茬獊鐨勫緟鎻掑叆鍏抽敭瀛楀瓨鍌ㄥ埌璇ュ崟鍏冧腑锛屼粠鑰岃В鍐冲啿绐併傛棦鎸囧鏋滃綋鍓嶅啿绐侊紝鍒欏皢鍏冪礌绉诲姩鍒板叾浠栫┖闂茬殑鍦版柟銆 + +$H_i=(H(key)+d_i)\mod m$銆 + ++ $i$琛ㄧず鍙戠敓绗$i$娆″啿绐侊紝$i=1,2,\cdots,m-1)$銆 ++ $m$涓烘暎鍒楄〃闀垮害锛岀被浼间簬寰幆闃熷垪锛岃秴鍑鸿〃闀夸互鍚庡氨寰幆鍒版渶宸﹁竟銆 ++ $d_i$涓哄閲忓簭鍒楋紝鏄寚鍙戠敓绗琲娆″啿绐佺殑鏃跺欙紝H(key)寰鍚庡亸绉讳簡澶氬皯浣嶃 + +澧為噺搴忓垪閫夋嫨锛 + ++ 绾挎ф帰娴嬪啀鏁e垪锛$d_i=1,2,3,\cdots,m-1$銆傜嚎鎬ф帰娴嬪啀鏁e垪娉曞厖鍒嗗埄鐢ㄤ簡鍝堝笇琛ㄧ殑绌洪棿锛屼絾鍦ㄨВ鍐充竴涓啿绐佹椂锛屽彲鑳介犳垚鏂扮殑鍐茬獊锛堣仛闆嗭細鍚屼箟鍜岄潪鍚屼箟鍏抽敭瀛楅兘鍫嗙Н鍒颁竴璧凤級銆傚彟澶栵紝涔熶笉鑳介殢渚垮缁撶偣杩涜鍒犻櫎銆 ++ 浜屾鎺㈡祴鍐嶆暎鍒楋細$di=1,-1,2^2,-2^2\cdots,(\dfrac{m}{2})^2,-(\dfrac{m}{2})^2$銆傚姣旂嚎鎬ф帰娴嬫硶鏇翠笉瀹规槗浜х敓鑱氶泦闂銆娉ㄦ剰锛鏁e垪琛ㄩ暱搴$m$蹇呴』鏄竴涓彲浠ヨ〃绀轰负$4j+3$鐨勭礌鏁版墠鑳芥帰娴嬪埌鎵鏈変綅缃 ++ 浼殢鏈烘帰娴嬪啀鏁e垪锛屽畾涔$d_i$鏄竴涓吉闅忔満鏁般 + +#### 閾惧湴鍧娉 + +鍙堢О涓烘媺閾炬硶鎴栭摼鎺ユ硶锛屾槸鎶婄浉浜掑彂鐢熷啿绐佺殑鍚屼箟璇嶇敤涓涓崟閾捐〃閾炬帴璧锋潵锛岃嫢骞茬粍鍚屼箟璇嶅彲浠ョ粍鎴愯嫢骞蹭釜鍗曢摼琛ㄣ傛濇兂绫讳技浜庨偦鎺ヨ〃鐨勫熀鏈濇兂锛屼笖杩欑鏂规硶閫傚悎浜庡啿绐佹瘮杈冧弗閲嶇殑鎯呭喌銆 + +鎸囬拡闇瑕侀澶栫殑绌洪棿锛屾晠褰撶粨鐐硅妯¤緝灏忔椂锛屽紑鏀惧畾鍧娉曡緝涓鸿妭鐪佺┖闂达紝鑰岃嫢灏嗚妭鐪佺殑鎸囬拡绌洪棿鐢ㄦ潵鎵╁ぇ鏁e垪琛ㄧ殑瑙勬ā锛屽彲浣胯濉洜瀛愬彉灏忥紝杩欏張鍑忓皯浜嗗紑鏀惧畾鍧娉曚腑鐨勫啿绐侊紝浠庤屾彁楂樺钩鍧囨煡鎵鹃熷害銆 + +#### 鍐嶆暎鍒楁硶 + +鍐嶆暎鍒楁硶鎴栧啀鍝堝笇娉曞叾瀹炲緢绠鍗曪紝灏辨槸鍐嶄娇鐢ㄦ暎鍒楀嚱鏁板幓鏁e垪涓涓緭鍏ョ殑鏃跺欙紝杈撳嚭鏄悓涓涓綅缃氨鍐嶆浣跨敤鍙︿竴涓暎鍒楀嚱鏁拌绠楋紝鐩磋嚦涓嶅彂鐢熷啿绐侊細 + +$H_i=RH_i(Key)\,i=1,2,\cdots,k$銆 + +姣忔鍐茬獊閮借閲嶆柊鍝堝笇锛岃绠楁椂闂村鍔犮 + +#### 鍏叡婧㈠嚭鍖烘硶 + +涓烘墍鏈夊啿绐佺殑鍏抽敭瀛楄褰曞缓绔嬩竴涓叕鍏辩殑婧㈠嚭鍖烘潵瀛樻斁銆傚湪鏌ユ壘鏃讹紝瀵圭粰瀹氬叧閿瓧閫氳繃鏁e垪鍑芥暟璁$畻鍑烘暎鍒楀湴鍧鍚庯紝鍏堜笌鍩烘湰琛ㄧ殑鐩稿簲浣嶇疆杩涜姣斿锛屽鏋滅浉绛夛紝鍒欐煡鎵炬垚鍔燂紱濡傛灉涓嶇浉绛夛紝鍒欏埌婧㈠嚭琛ㄨ繘琛岄『搴忔煡鎵俱傚鏋滅浉瀵逛簬鍩烘湰琛ㄨ岃█锛屽湪鏈夊啿绐佺殑鏁版嵁寰堝皯鐨勬儏鍐典笅锛屽叕鍏辨孩鍑哄尯鐨勭粨鏋勫鏌ユ壘鎬ц兘鏉ヨ杩樻槸闈炲父楂樼殑銆 + +### 鏁e垪鏌ユ壘 + +鍏堥氳繃鏁e垪鍑芥暟璁$畻鐩爣鍏冪礌瀛樺偍鍦板潃锛岀劧鍚庢牴鎹В鍐冲啿绐佺殑鏂规硶杩涜涓嬩竴姝ョ殑鏌ヨ銆 + +濡傛灉浣跨敤鎷夐摼娉曢氳繃鏁e垪鍑芥暟璁$畻寰楀埌瀛樺偍鍦板潃涓虹┖锛屽垯鍙互鐩存帴浠h〃鏌ユ壘澶辫触锛岃繖鏃跺欎竴鑸畾涔夋煡鎵鹃暱搴﹁繖閲屼笉绠椼 + +鑰屽鏋滀娇鐢ㄥ紑鏀惧湴鍧娉曡绠楀緱鍒扮┖浣嶇疆鐨勬椂鍊欙紝浠h〃鏌ユ壘澶辫触锛屼絾鏄繖鏃跺欓渶瑕佸畾涔夋煡鎵鹃暱搴﹁绠楄繖涓湴鍧銆 + +鑻ユ暎鍒楀嚱鏁拌璁″緱瓒冲濂斤紝鏁e垪鏌ユ壘鏃堕棿澶嶆潅搴﹀彲浠ヨ揪鍒$O(1)$锛屽嵆涓嶅瓨鍦ㄥ啿绐併 + +**瑁呭~鍥犲瓙**=琛ㄤ腑璁板綍鏁/鏁e垪琛ㄩ暱搴︺傝濉洜瀛愪唬琛ㄤ竴涓暎鍒楄〃涓殑婊′綑鎯呭喌锛岃秺澶у垯鏌ユ壘鏁堢巼瓒婁綆銆 + +鑻ュ彧缁欏嚭浜嗚濉洜瀛$\alpha$锛屽垯姝ゆ椂骞冲潎鏌ユ壘闀垮害涓猴細$ASL=\dfrac{1}{2}(1+\dfrac{1}{1-\alpha})$銆 diff --git a/Data-Structrue/sort.md b/Data-Structrue/sort.md new file mode 100644 index 0000000..8e1ce5a --- /dev/null +++ b/Data-Structrue/sort.md @@ -0,0 +1,68 @@ +# 鎺掑簭 + +## 鍩烘湰姒傚康 + ++ 鎺掑簭锛氬皢涓涓暟鎹厓绱犵殑浠绘剰搴忓垪閲嶆柊鎺掑垪鎴愪竴涓寜鍏抽敭瀛楁湁搴忕殑搴忓垪銆 ++ 鍐呴儴鎺掑簭锛氬緟鎺掑簭鐨勮褰曞瓨鏀惧湪璁$畻鏈虹殑鍐呭瓨涓墍杩涜鐨勬帓搴忔搷浣滅О涓哄唴閮ㄦ帓搴忋 ++ 澶栭儴鎺掑簭锛氬緟鎺掑簭鐨勮褰曟暟閲忓緢澶э紝浠ヨ嚧鍐呭瓨涓娆′笉鑳藉绾冲叏閮ㄨ褰曪紝鍦ㄦ帓搴忚繃绋嬩腑闇瑕佽闂瀛樼殑鎺掑簭杩囩▼绉颁负澶栭儴鎺掑簭銆 ++ 绋冲畾鐨勬帓搴忥細姣斿涓涓簭鍒楁槸鈥1,4,3,3*,2鈥濓紝鎸変粠灏忓埌澶ф帓搴忓悗鍙樻垚鈥1,2,3,3*,4鈥濓紝灏卞彨鍋氱ǔ瀹氭帓搴忥紝鍗3鍜3*鐩稿椤哄簭涓嶅彉銆傚鏋滅浉鍚屽叧閿瓧鐨勯『搴忓彂鐢熶簡鏀瑰彉锛屽垯鏄笉绋冲畾鐨勬帓搴忋傜ǔ瀹氭х殑闇瑕佺湅鍏蜂綋鐨勫簲鐢ㄥ満鏅 ++ 鍐呴儴鎺掑簭鐨勭畻娉曟ц兘鍙栧喅浜庣畻娉曠殑鏃堕棿澶嶆潅搴﹀拰绌洪棿澶嶆潅搴︼紝鑰屾椂闂村鏉傚害涓鑸槸鐢辨瘮杈冨拰绉诲姩娆℃暟鍐冲畾鐨勩傚閮ㄦ帓搴忛櫎姝や箣澶栬繕瑕佽冭檻纾佺洏璇诲啓閫熷害鍜屾鏁般 ++ 澶ч儴鍒嗘帓搴忕畻娉曢兘浠呴傜敤浜庨『搴忓瓨鍌ㄧ殑绾挎ц〃銆 + +## 鎻掑叆鎺掑簭 + +### 鐩存帴鎻掑叆鎺掑簭 + +姣忔灏嗕竴涓緟鎺掑簭鐨勮褰曟寜鍏跺叧閿瓧澶у皬鎻掑叆鍒板墠闈㈠凡鎺掑ソ搴忕殑瀛愬簭鍒椾腑锛岀洿鍒板叏閮ㄨ褰曟彃鍏ュ畬鎴愪负姝€ + +绌洪棿澶嶆潅搴︿负$O(1)$銆 + +鏃堕棿澶嶆潅搴︿富瑕佹潵鑷姣斿叧閿瓧锛岀Щ鍔ㄥ厓绱狅紝鑻ユ湁n涓厓绱狅紝鍒欓渶瑕乶-1瓒熷鐞嗐 + +鏈濂芥儏鍐垫槸鍘熸湰鐨勫簭鍒楀氨鏄湁搴忕殑锛岄渶瑕乶-1瓒熷鐞嗭紝姣忔鍙渶瑕佸姣斾竴娆″叧閿瓧锛屼笉鐢ㄧЩ鍔ㄥ厓绱狅紝鏃堕棿澶嶆潅搴︿负$O(n)$銆 + +鏈鍧忔儏鍐垫槸鍘熸湰鐨勫簭鍒楁槸閫嗗簭鐨勶紝闇瑕乶-1瓒熷鐞嗭紝绗琲瓒熷鐞嗛渶瑕佸姣斿叧閿瓧i+1娆★紝绉诲姩鍏冪礌i+2娆★紝鏃堕棿澶嶆潅搴︽槸$O(n^2)$銆 + +鎵浠ュ钩鍧囨椂闂村鏉傚害鏄$O(n^2)$銆 + +鐩存帴鎻掑叆鎺掑簭绠楁硶鏄ǔ瀹氱殑銆 + +濡傛灉浣跨敤閾捐〃瀹炵幇鐩存帴鎻掑叆鎺掑簭锛岀Щ鍔ㄥ厓绱犵殑娆℃暟鍙樺皯浜嗭紝浣嗘槸鍏抽敭瀛楀姣旀鏁颁粛鐒舵椂$O(n^2)$锛屼粠鑰屾暣浣撴椂闂村鏉傚害渚濈劧鏄$O(n^2)$銆 + +### 浜屽垎鎻掑叆鎺掑簭 + +涔熺О涓烘姌鍗婃彃鍏ユ帓搴忥紝鏄鐩存帴鎻掑叆鎺掑簭鐨勪紭鍖栵紝鍦ㄥ鎵炬彃鍏ヤ綅缃椂浣跨敤浜屽垎鏌ユ壘鐨勬柟寮忋 + +褰揹ata[mid]==data[i]鏃讹紝涓轰簡淇濊瘉绠楁硶鐨勭ǔ瀹氭э紝浼氱户缁湪mid鎵鎸囦綅缃彸杈瑰鎵炬彃鍏ヤ綅缃 + +褰搇ow>high鏃跺仠姝㈡姌鍗婃煡鎵撅紝骞跺皢[low,i-1]鍐呯殑鍏冪礌鍏ㄩ儴鍙崇Щ锛屽苟鎶婂厓绱犲艰祴鍊煎埌low鎵鎸囩殑浣嶇疆銆 + +绌洪棿澶嶆潅搴︿负$O(1)$銆 + +浜屽垎鎻掑叆鎺掑簭鏄ǔ瀹氱殑銆 + +姣旇捣鐩存帴鎻掑叆鎺掑簭锛屾瘮杈冨叧閿瓧鐨勬鏁板噺灏戯紝绉诲姩鍏冪礌鐨勬鏁版病鍙橈紝鎵浠ユ讳綋鏃堕棿澶嶆潅搴︿负$O(n^2)$銆 + +### 甯屽皵鎺掑簭 + +甯屽皵鎺掑簭涔熸槸瀵圭洿鎺ユ彃鍏ユ帓搴忕殑浼樺寲銆傜洿鎺ユ彃鍏ユ帓搴忓浜庡熀鏈湁搴忕殑搴忓垪鎺掑簭鏁堟灉杈冨ソ锛屾墍浠ュ氨甯屾湜搴忓垪鑳藉敖鍙兘鍩烘湰鏈夊簭銆備粠鑰屽笇灏旀帓搴忕殑鎬濇兂灏辨槸鍏堣拷姹傝〃涓厓绱犻儴鍒嗘湁搴忥紝鐒跺悗閫愭笎閫艰繎鍏ㄥ眬鏈夊簭銆 + +鍏堝皢鏁翠釜寰呮帓搴忓厓绱犲簭鍒楀垎鍓叉垚鑻ュ共涓瓙搴忓垪锛堢敱鐩搁殧鏌愪釜鈥滃閲忊濈殑鍏冪礌缁勬垚鐨勶級锛屽垎鍒繘琛岀洿鎺ユ彃鍏ユ帓搴忥紝鐒跺悗缂╁皬澧為噺閲嶅涓婅堪杩囩▼锛岀洿鍒板閲忎负1銆 + +澧為噺搴忓垪鐨勯夋嫨寤鸿鏄涓瓒熼夋嫨鍏冪礌涓暟鐨勪竴鍗婏紝鍚庨潰涓嶆柇缂╁皬鍒板師鏉ョ殑涓鍗娿 + +绌洪棿澶嶆潅搴︿负$O(1)$銆 + +鑰屾椂闂村鏉傚害鍜屽閲忓簭鍒楃殑閫夋嫨鏈夊叧锛岀洰鍓嶆棤娉曚娇鐢ㄥ睘鎬ф墜娈佃瘉鏄庣‘鍒囩殑鏃堕棿澶嶆潅搴︺傛渶鍧忔椂闂村鏉傚害涓$O(n^2)$锛屽湪鏌愪釜鑼冨洿鍐呭彲浠ヨ揪鍒$O(n^{1.3})$銆 + +甯屽皵鎺掑簭鏄笉绋冲畾鐨勩 + +甯屽皵鎺掑簭鍙傜敤浜庨『搴忚〃鑰屼笉閫傚悎鐢ㄤ簬閾捐〃锛屾棤娉曞揩閫熻繘琛屽閲忕殑璁块棶銆 + +## 浜ゆ崲鎺掑簭 + +浜ゆ崲鎺掑簭鍗虫牴鎹簭鍒椾腑涓や釜鍏冪礌鍏抽敭鐨勬瘮杈冪粨鏋勭劧鍚庝氦鎹㈣繖涓や釜璁板綍鍦ㄥ簭鍒椾腑鐨勪綅缃 + +### 鍐掓场鎺掑簭 + +浠庡悗寰鍓嶆垨浠庡墠寰鍚庝袱涓ゆ瘮杈冪浉閭诲厓绱犵殑鍊硷紝鑻ラ嗗簭鍒欎氦鎹㈣繖涓や釜鍊硷紝鐩村埌搴忓垪姣旇緝瀹屻傝繖涓繃绋嬫槸涓瓒熷啋娉℃帓搴忋傛瘡涓瓒熼兘浼氳鍏抽敭瀛楁渶灏忔垨鏈澶х殑涓涓厓绱犲埌鏈帓搴忛槦鍒楃殑绗竴涓垨鏈鍚庝竴涓 \ No newline at end of file