{"id":94067,"date":"2026-08-13T16:41:13","date_gmt":"2026-08-13T08:41:13","guid":{"rendered":"https:\/\/www.wsisp.com\/helps\/94067.html"},"modified":"2026-08-13T16:41:13","modified_gmt":"2026-08-13T08:41:13","slug":"%e7%bb%8f%e5%85%b8%e6%8e%92%e5%ba%8f%e7%ae%97%e6%b3%95%e8%af%a6%e8%a7%a3%ef%bc%9a%e4%bb%8e%e5%8e%9f%e7%90%86%e5%88%b0%e5%b7%a5%e7%a8%8b%e5%ae%9e%e8%b7%b5%e7%9a%84%e5%ae%8c%e6%95%b4%e6%8c%87%e5%8d%97","status":"publish","type":"post","link":"https:\/\/www.wsisp.com\/helps\/94067.html","title":{"rendered":"\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3\uff1a\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357"},"content":{"rendered":"<ul>\n<li><\/li>\n<\/ul>\n<h2>\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3&#xff1a;\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357<\/h2>\n<p>\u672c\u6587\u4ece\u6392\u5e8f\u7b97\u6cd5\u7684\u5206\u7c7b\u4e0e\u6838\u5fc3\u6982\u5ff5\u8bb2\u8d77&#xff0c;\u9010\u4e2a\u62c6\u89e38\u79cd\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u7684\u6267\u884c\u8fc7\u7a0b\u3001\u590d\u6742\u5ea6\u63a8\u5bfc\u4e0e\u7a33\u5b9a\u6027\u8bc1\u660e&#xff0c;\u6700\u540e\u843d\u5230\u5de5\u7a0b\u5b9e\u8df5&#xff08;TimSort\u3001IntroSort&#xff09;\u548c\u9762\u8bd5\u9ad8\u9891\u9898\u578b\u3002\u6bcf\u4e2a\u7b97\u6cd5\u914d\u6709 Mermaid \u6d41\u7a0b\u56fe\u89e3&#xff0c;\u529b\u6c42\u8bb2\u6e05&#034;\u4e3a\u4ec0\u4e48&#034;\u800c\u975e\u7f57\u5217\u7ed3\u8bba\u3002<\/p>\n<hr \/>\n<h3>\u76ee\u5f55<\/h3>\n<ul>\n<li>\u7b2c1\u7ae0 \u6392\u5e8f\u7b97\u6cd5\u5168\u666f&#xff1a;\u5206\u7c7b\u3001\u7a33\u5b9a\u6027\u4e0e\u590d\u6742\u5ea6\u4e0b\u754c<\/li>\n<li>\u7b2c2\u7ae0 \u5192\u6ce1\u6392\u5e8f&#xff1a;\u4ece\u6734\u7d20\u5230\u4f18\u5316\u7684\u5b8c\u6574\u63a8\u5bfc<\/li>\n<li>\u7b2c3\u7ae0 \u9009\u62e9\u6392\u5e8f&#xff1a;\u4e3a\u4ec0\u4e48\u5b83\u603b\u662fO(n\u00b2)<\/li>\n<li>\u7b2c4\u7ae0 \u63d2\u5165\u6392\u5e8f&#xff1a;\u5c0f\u6570\u7ec4\u7684\u738b\u8005<\/li>\n<li>\u7b2c5\u7ae0 \u5f52\u5e76\u6392\u5e8f&#xff1a;\u5206\u6cbb\u7684\u4f18\u96c5<\/li>\n<li>\u7b2c6\u7ae0 \u5feb\u901f\u6392\u5e8f&#xff1a;\u4e3a\u4ec0\u4e48\u5b83\u662f\u5b9e\u9645\u6700\u5feb\u7684<\/li>\n<li>\u7b2c7\u7ae0 \u5806\u6392\u5e8f&#xff1a;\u4f18\u5148\u961f\u5217\u7684\u6392\u5e8f<\/li>\n<li>\u7b2c8\u7ae0 \u975e\u6bd4\u8f83\u6392\u5e8f&#xff1a;\u8ba1\u6570\u3001\u57fa\u6570\u4e0e\u6876\u6392\u5e8f<\/li>\n<li>\u7b2c9\u7ae0 \u5de5\u7a0b\u5b9e\u8df5&#xff1a;TimSort\u3001IntroSort\u4e0e\u5e93\u5b9e\u73b0\u9009\u578b<\/li>\n<li>\u7b2c10\u7ae0 \u9762\u8bd5\u9ad8\u9891\u9898\u578b\u4e0e\u5b9e\u6218\u603b\u7ed3<\/li>\n<\/ul>\n<hr \/>\n<h3>\u7b2c1\u7ae0 \u6392\u5e8f\u7b97\u6cd5\u5168\u666f&#xff1a;\u5206\u7c7b\u3001\u7a33\u5b9a\u6027\u4e0e\u590d\u6742\u5ea6\u4e0b\u754c<\/h3>\n<h4>1.1 \u4e3a\u4ec0\u4e48\u8981\u6df1\u5165\u5b66\u4e60\u6392\u5e8f<\/h4>\n<p>\u6392\u5e8f\u662f\u8ba1\u7b97\u673a\u79d1\u5b66\u4e2d\u6700\u57fa\u672c\u7684\u64cd\u4f5c\u4e4b\u4e00\u3002\u4f60\u53ef\u80fd\u4f1a\u89c9\u5f97&#xff1a;\u201c\u8c03\u4e00\u4e0b Arrays.sort() \u4e0d\u5c31\u884c\u4e86&#xff1f;\u201d \u4f46\u7406\u89e3\u6392\u5e8f\u7b97\u6cd5\u7684\u5e95\u5c42\u539f\u7406&#xff0c;\u5728\u4ee5\u4e0b\u573a\u666f\u4e2d\u4e0d\u53ef\u6216\u7f3a&#xff1a;<\/p>\n<ul>\n<li>\u9762\u8bd5&#xff1a;\u5feb\u6392\u7684 partition \u8fc7\u7a0b\u3001\u5f52\u5e76\u7684 merge \u5b9e\u73b0\u3001\u5806\u7684\u8c03\u6574\u903b\u8f91&#xff0c;\u662f\u5404\u5927\u5382\u7b14\u8bd5\u7684\u9ad8\u9891\u9898<\/li>\n<li>\u5de5\u7a0b\u9009\u578b&#xff1a;\u5904\u740610\u4ebf\u6761\u6570\u636e\u65f6\u8be5\u7528\u5916\u90e8\u5f52\u5e76\u8fd8\u662f\u6876\u6392\u5e8f&#xff1f;\u5c0f\u6570\u7ec4\u4e3a\u4ec0\u4e48\u7528\u63d2\u5165\u6392\u5e8f\u66f4\u5feb&#xff1f;<\/li>\n<li>\u7406\u89e3\u5e93\u5b9e\u73b0&#xff1a;Java \u7684 Arrays.sort() \u5bf9\u5bf9\u8c61\u6570\u7ec4\u7528 TimSort\u3001\u5bf9\u57fa\u672c\u7c7b\u578b\u7528 Dual-Pivot QuickSort&#xff0c;\u4e3a\u4ec0\u4e48\u8bbe\u8ba1\u4e0d\u540c&#xff1f;<\/li>\n<\/ul>\n<p>\u672c\u6587\u4e0d\u53ea\u662f\u5217\u51fa\u4ee3\u7801\u548c\u590d\u6742\u5ea6\u8868&#xff0c;\u800c\u662f\u8bb2\u6e05\u695a\u6bcf\u4e2a\u7b97\u6cd5\u7684\u6838\u5fc3\u601d\u60f3\u3001\u6267\u884c\u8fc7\u7a0b\u3001\u4e3a\u4ec0\u4e48\u6709\u8fd9\u6837\u7684\u590d\u6742\u5ea6\u3001\u4e3a\u4ec0\u4e48\u7a33\u5b9a\u6216\u4e0d\u7a33\u5b9a&#xff0c;\u4ee5\u53ca\u5728\u5de5\u7a0b\u4e2d\u5982\u4f55\u9009\u62e9\u3002<\/p>\n<h4>1.2 \u6392\u5e8f\u7b97\u6cd5\u7684\u5206\u7c7b<\/h4>\n<p>\u6392\u5e8f\u7b97\u6cd5\u53ef\u4ee5\u4ece\u591a\u4e2a\u7ef4\u5ea6\u5206\u7c7b&#xff1a;<\/p>\n<p>  #mermaid-svg-WK8FPCmyKawfG2oc{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-WK8FPCmyKawfG2oc .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-WK8FPCmyKawfG2oc .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-WK8FPCmyKawfG2oc .error-icon{fill:#552222;}#mermaid-svg-WK8FPCmyKawfG2oc .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-WK8FPCmyKawfG2oc .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-WK8FPCmyKawfG2oc .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-WK8FPCmyKawfG2oc .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-WK8FPCmyKawfG2oc .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-WK8FPCmyKawfG2oc .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-WK8FPCmyKawfG2oc .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-WK8FPCmyKawfG2oc .marker{fill:#333333;stroke:#333333;}#mermaid-svg-WK8FPCmyKawfG2oc .marker.cross{stroke:#333333;}#mermaid-svg-WK8FPCmyKawfG2oc svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-WK8FPCmyKawfG2oc p{margin:0;}#mermaid-svg-WK8FPCmyKawfG2oc .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-WK8FPCmyKawfG2oc .cluster-label text{fill:#333;}#mermaid-svg-WK8FPCmyKawfG2oc .cluster-label span{color:#333;}#mermaid-svg-WK8FPCmyKawfG2oc .cluster-label span p{background-color:transparent;}#mermaid-svg-WK8FPCmyKawfG2oc .label text,#mermaid-svg-WK8FPCmyKawfG2oc span{fill:#333;color:#333;}#mermaid-svg-WK8FPCmyKawfG2oc .node rect,#mermaid-svg-WK8FPCmyKawfG2oc .node circle,#mermaid-svg-WK8FPCmyKawfG2oc .node ellipse,#mermaid-svg-WK8FPCmyKawfG2oc .node polygon,#mermaid-svg-WK8FPCmyKawfG2oc .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-WK8FPCmyKawfG2oc .rough-node .label text,#mermaid-svg-WK8FPCmyKawfG2oc .node .label text,#mermaid-svg-WK8FPCmyKawfG2oc .image-shape .label,#mermaid-svg-WK8FPCmyKawfG2oc .icon-shape .label{text-anchor:middle;}#mermaid-svg-WK8FPCmyKawfG2oc .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-WK8FPCmyKawfG2oc .rough-node .label,#mermaid-svg-WK8FPCmyKawfG2oc .node .label,#mermaid-svg-WK8FPCmyKawfG2oc .image-shape .label,#mermaid-svg-WK8FPCmyKawfG2oc .icon-shape .label{text-align:center;}#mermaid-svg-WK8FPCmyKawfG2oc .node.clickable{cursor:pointer;}#mermaid-svg-WK8FPCmyKawfG2oc .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-WK8FPCmyKawfG2oc .arrowheadPath{fill:#333333;}#mermaid-svg-WK8FPCmyKawfG2oc .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-WK8FPCmyKawfG2oc .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-WK8FPCmyKawfG2oc .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WK8FPCmyKawfG2oc .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-WK8FPCmyKawfG2oc .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WK8FPCmyKawfG2oc .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-WK8FPCmyKawfG2oc .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-WK8FPCmyKawfG2oc .cluster text{fill:#333;}#mermaid-svg-WK8FPCmyKawfG2oc .cluster span{color:#333;}#mermaid-svg-WK8FPCmyKawfG2oc div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-WK8FPCmyKawfG2oc .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-WK8FPCmyKawfG2oc rect.text{fill:none;stroke-width:0;}#mermaid-svg-WK8FPCmyKawfG2oc .icon-shape,#mermaid-svg-WK8FPCmyKawfG2oc .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-WK8FPCmyKawfG2oc .icon-shape p,#mermaid-svg-WK8FPCmyKawfG2oc .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-WK8FPCmyKawfG2oc .icon-shape .label rect,#mermaid-svg-WK8FPCmyKawfG2oc .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-WK8FPCmyKawfG2oc .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-WK8FPCmyKawfG2oc .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-WK8FPCmyKawfG2oc :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6392\u5e8f\u7b97\u6cd5\u5206\u7c7b\u5168\u666f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6bd4\u8f83\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>O(n\u00b2) \u7b80\u5355\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5192\u6ce1\u6392\u5e8f&#xff08;\u7a33\u5b9a&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u9009\u62e9\u6392\u5e8f&#xff08;\u4e0d\u7a33\u5b9a&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u63d2\u5165\u6392\u5e8f&#xff08;\u7a33\u5b9a&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>O(n log n) \u9ad8\u6548\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5f52\u5e76\u6392\u5e8f&#xff08;\u7a33\u5b9a&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5feb\u901f\u6392\u5e8f&#xff08;\u4e0d\u7a33\u5b9a&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5806\u6392\u5e8f&#xff08;\u4e0d\u7a33\u5b9a&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u975e\u6bd4\u8f83\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8ba1\u6570\u6392\u5e8f O(n&#043;k)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u57fa\u6570\u6392\u5e8f O(d\u00b7n)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6876\u6392\u5e8f O(n&#043;k)<\/p>\n<p><\/span><\/p>\n<p>\u56fe1-1&#xff1a;\u6392\u5e8f\u7b97\u6cd5\u5206\u7c7b\u5168\u666f\u56fe\u2014\u2014\u6bd4\u8f83\u6392\u5e8f\u6709 O(n log n) \u7684\u7406\u8bba\u4e0b\u754c&#xff0c;\u975e\u6bd4\u8f83\u6392\u5e8f\u53ef\u7a81\u7834\u4e0b\u754c\u4f46\u8981\u6c42\u6570\u636e\u6ee1\u8db3\u7279\u5b9a\u6761\u4ef6<\/p>\n<p>\u6bd4\u8f83\u6392\u5e8f vs \u975e\u6bd4\u8f83\u6392\u5e8f\u662f\u6700\u5927\u7684\u5206\u6c34\u5cad&#xff1a;<\/p>\n<ul>\n<li>\u6bd4\u8f83\u6392\u5e8f&#xff1a;\u901a\u8fc7\u6bd4\u8f83\u4e24\u4e2a\u5143\u7d20\u7684\u5927\u5c0f\u6765\u51b3\u5b9a\u987a\u5e8f\u3002\u5305\u62ec\u5192\u6ce1\u3001\u9009\u62e9\u3001\u63d2\u5165\u3001\u5f52\u5e76\u3001\u5feb\u6392\u3001\u5806\u6392\u3002\u65e0\u8bba\u600e\u4e48\u4f18\u5316&#xff0c;\u6700\u574f\u60c5\u51b5\u4e0b\u81f3\u5c11\u9700\u8981 O(n log n) \u6b21\u6bd4\u8f83&#xff08;\u51b3\u7b56\u6811\u6a21\u578b\u53ef\u8bc1\u660e&#xff09;\u3002<\/li>\n<li>\u975e\u6bd4\u8f83\u6392\u5e8f&#xff1a;\u4e0d\u901a\u8fc7\u6bd4\u8f83&#xff0c;\u800c\u662f\u5229\u7528\u5143\u7d20\u672c\u8eab\u7684\u7279\u6027&#xff08;\u5982\u53d6\u503c\u8303\u56f4\u3001\u4f4d\u6570&#xff09;\u6765\u6392\u5e8f\u3002\u5305\u62ec\u8ba1\u6570\u6392\u5e8f\u3001\u57fa\u6570\u6392\u5e8f\u3001\u6876\u6392\u5e8f\u3002\u53ef\u4ee5\u505a\u5230 O(n)&#xff0c;\u4f46\u8981\u6c42\u6570\u636e\u6ee1\u8db3\u7279\u5b9a\u7ea6\u675f&#xff08;\u5982\u53d6\u503c\u8303\u56f4\u6709\u9650&#xff09;\u3002<\/li>\n<\/ul>\n<h4>1.3 \u7a33\u5b9a\u6027&#xff1a;\u6bd4\u4f60\u60f3\u7684\u66f4\u91cd\u8981<\/h4>\n<p>\u7a33\u5b9a\u6027\u662f\u6307&#xff1a;\u5bf9\u4e8e\u76f8\u7b49\u7684\u5143\u7d20&#xff0c;\u6392\u5e8f\u540e\u5b83\u4eec\u7684\u76f8\u5bf9\u987a\u5e8f\u4e0e\u6392\u5e8f\u524d\u4e00\u81f4\u3002<\/p>\n<p>\u4e3a\u4ec0\u4e48\u8981\u5173\u5fc3\u7a33\u5b9a\u6027&#xff1f;\u8003\u8651\u4e00\u4e2a\u573a\u666f&#xff1a;\u4f60\u6709\u4e00\u4e2a\u5b66\u751f\u5217\u8868&#xff0c;\u5df2\u7ecf\u6309\u59d3\u540d\u6392\u5e8f\u3002\u73b0\u5728\u4f60\u8981\u6309\u73ed\u7ea7\u6392\u5e8f&#xff0c;\u5982\u679c\u6392\u5e8f\u7b97\u6cd5\u662f\u7a33\u5b9a\u7684&#xff0c;\u90a3\u4e48\u540c\u4e00\u4e2a\u73ed\u7ea7\u7684\u5b66\u751f\u4ecd\u7136\u6309\u59d3\u540d\u6392\u5e8f&#xff1b;\u5982\u679c\u4e0d\u7a33\u5b9a&#xff0c;\u540c\u4e00\u4e2a\u73ed\u7ea7\u7684\u5b66\u751f\u59d3\u540d\u987a\u5e8f\u5c31\u4e71\u4e86\u3002<\/p>\n<p>  #mermaid-svg-l1w29QiPln1bdOUh{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-l1w29QiPln1bdOUh .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-l1w29QiPln1bdOUh .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-l1w29QiPln1bdOUh .error-icon{fill:#552222;}#mermaid-svg-l1w29QiPln1bdOUh .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-l1w29QiPln1bdOUh .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-l1w29QiPln1bdOUh .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-l1w29QiPln1bdOUh .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-l1w29QiPln1bdOUh .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-l1w29QiPln1bdOUh .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-l1w29QiPln1bdOUh .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-l1w29QiPln1bdOUh .marker{fill:#333333;stroke:#333333;}#mermaid-svg-l1w29QiPln1bdOUh .marker.cross{stroke:#333333;}#mermaid-svg-l1w29QiPln1bdOUh svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-l1w29QiPln1bdOUh p{margin:0;}#mermaid-svg-l1w29QiPln1bdOUh .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-l1w29QiPln1bdOUh .cluster-label text{fill:#333;}#mermaid-svg-l1w29QiPln1bdOUh .cluster-label span{color:#333;}#mermaid-svg-l1w29QiPln1bdOUh .cluster-label span p{background-color:transparent;}#mermaid-svg-l1w29QiPln1bdOUh .label text,#mermaid-svg-l1w29QiPln1bdOUh span{fill:#333;color:#333;}#mermaid-svg-l1w29QiPln1bdOUh .node rect,#mermaid-svg-l1w29QiPln1bdOUh .node circle,#mermaid-svg-l1w29QiPln1bdOUh .node ellipse,#mermaid-svg-l1w29QiPln1bdOUh .node polygon,#mermaid-svg-l1w29QiPln1bdOUh .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-l1w29QiPln1bdOUh .rough-node .label text,#mermaid-svg-l1w29QiPln1bdOUh .node .label text,#mermaid-svg-l1w29QiPln1bdOUh .image-shape .label,#mermaid-svg-l1w29QiPln1bdOUh .icon-shape .label{text-anchor:middle;}#mermaid-svg-l1w29QiPln1bdOUh .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-l1w29QiPln1bdOUh .rough-node .label,#mermaid-svg-l1w29QiPln1bdOUh .node .label,#mermaid-svg-l1w29QiPln1bdOUh .image-shape .label,#mermaid-svg-l1w29QiPln1bdOUh .icon-shape .label{text-align:center;}#mermaid-svg-l1w29QiPln1bdOUh .node.clickable{cursor:pointer;}#mermaid-svg-l1w29QiPln1bdOUh .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-l1w29QiPln1bdOUh .arrowheadPath{fill:#333333;}#mermaid-svg-l1w29QiPln1bdOUh .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-l1w29QiPln1bdOUh .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-l1w29QiPln1bdOUh .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-l1w29QiPln1bdOUh .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-l1w29QiPln1bdOUh .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-l1w29QiPln1bdOUh .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-l1w29QiPln1bdOUh .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-l1w29QiPln1bdOUh .cluster text{fill:#333;}#mermaid-svg-l1w29QiPln1bdOUh .cluster span{color:#333;}#mermaid-svg-l1w29QiPln1bdOUh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-l1w29QiPln1bdOUh .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-l1w29QiPln1bdOUh rect.text{fill:none;stroke-width:0;}#mermaid-svg-l1w29QiPln1bdOUh .icon-shape,#mermaid-svg-l1w29QiPln1bdOUh .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-l1w29QiPln1bdOUh .icon-shape p,#mermaid-svg-l1w29QiPln1bdOUh .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-l1w29QiPln1bdOUh .icon-shape .label rect,#mermaid-svg-l1w29QiPln1bdOUh .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-l1w29QiPln1bdOUh .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-l1w29QiPln1bdOUh .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-l1w29QiPln1bdOUh :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u4e0d\u7a33\u5b9a\u6392\u5e8f\u540e&#xff08;\u6309\u73ed\u7ea7&#xff09;<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u7a33\u5b9a\u6392\u5e8f\u540e&#xff08;\u6309\u73ed\u7ea7&#xff09;<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6392\u5e8f\u524d&#xff08;\u6309\u59d3\u540d\u6392\u597d&#xff09;<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5f20\u4e09 \u73ed\u7ea72<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u674e\u56db \u73ed\u7ea71<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u738b\u4e94 \u73ed\u7ea72<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u8d75\u516d \u73ed\u7ea71<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u674e\u56db \u73ed\u7ea71<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u8d75\u516d \u73ed\u7ea71<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5f20\u4e09 \u73ed\u7ea72<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u738b\u4e94 \u73ed\u7ea72<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u8d75\u516d \u73ed\u7ea71<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u674e\u56db \u73ed\u7ea71<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u738b\u4e94 \u73ed\u7ea72<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5f20\u4e09 \u73ed\u7ea72<\/p>\n<p><\/span><\/p>\n<p>\u56fe1-2&#xff1a;\u7a33\u5b9a\u6392\u5e8f\u4fdd\u6301\u540c\u73ed\u7ea7\u5185\u59d3\u540d\u987a\u5e8f\u4e0d\u53d8&#xff08;\u7eff\u8272&#xff09;&#xff0c;\u4e0d\u7a33\u5b9a\u6392\u5e8f\u53ef\u80fd\u6253\u4e71&#xff08;\u7ea2\u8272&#xff09;<\/p>\n<p>\u5224\u65ad\u7a33\u5b9a\u6027\u7684\u901a\u7528\u539f\u5219&#xff1a;\u5982\u679c\u7b97\u6cd5\u4e2d\u76f8\u7b49\u5143\u7d20\u4e4b\u95f4\u53d1\u751f\u4e86&#034;\u8de8\u8d8a\u5f0f\u4ea4\u6362&#034;&#xff08;\u5373\u4e00\u4e2a\u76f8\u7b49\u5143\u7d20\u8df3\u8fc7\u4e86\u53e6\u4e00\u4e2a\u76f8\u7b49\u5143\u7d20&#xff09;&#xff0c;\u5219\u4e0d\u7a33\u5b9a\u3002\u6211\u4eec\u4f1a\u5728\u6bcf\u4e2a\u7b97\u6cd5\u7684\u5206\u6790\u4e2d\u5177\u4f53\u8bf4\u660e\u3002<\/p>\n<h4>1.4 \u6bd4\u8f83\u6392\u5e8f\u7684\u590d\u6742\u5ea6\u4e0b\u754c&#xff1a;O(n log n)<\/h4>\n<p>\u4e3a\u4ec0\u4e48\u6bd4\u8f83\u6392\u5e8f\u4e0d\u80fd\u6bd4 O(n log n) \u66f4\u5feb&#xff1f;\u8fd9\u4e0d\u662f\u7ecf\u9a8c\u7ed3\u8bba&#xff0c;\u800c\u662f\u6570\u5b66\u5b9a\u7406\u3002<\/p>\n<p>\u51b3\u7b56\u6811\u6a21\u578b\u8bc1\u660e&#xff1a;n \u4e2a\u5143\u7d20\u6709 n! \u79cd\u6392\u5217\u3002\u6bcf\u6b21\u6bd4\u8f83\u76f8\u5f53\u4e8e\u5728\u51b3\u7b56\u6811\u4e2d\u8d70\u4e00\u6b65&#xff08;\u5de6\u6216\u53f3&#xff09;&#xff0c;\u628a\u53ef\u80fd\u7684\u6392\u5217\u96c6\u5408\u4e00\u5206\u4e3a\u4e8c\u3002\u8981\u533a\u5206 n! \u79cd\u6392\u5217&#xff0c;\u51b3\u7b56\u6811\u81f3\u5c11\u9700\u8981 n! \u4e2a\u53f6\u5b50\u8282\u70b9\u3002\u4e00\u68f5\u9ad8\u5ea6\u4e3a h \u7684\u4e8c\u53c9\u6811\u6700\u591a\u6709 2^h \u4e2a\u53f6\u5b50&#xff0c;\u6240\u4ee5&#xff1a;<\/p>\n<p><span class=\"katex--display\"><span class=\"katex-display\"><span class=\"katex\"><span class=\"katex-mathml\"><\/p>\n<p>          2<\/p>\n<p>          h<\/p>\n<p>         \u2265<\/p>\n<p>         n<\/p>\n<p>         !<br \/>\n        \u2005\u200a<\/p>\n<p>         \u27f9<br \/>\n        \u2005\u200a<\/p>\n<p>         h<\/p>\n<p>         \u2265<\/p>\n<p>           log<\/p>\n<p>           \u2061<\/p>\n<p>          2<\/p>\n<p>         (<\/p>\n<p>         n<\/p>\n<p>         !<\/p>\n<p>         )<\/p>\n<p>        2^h \\\\geq n! \\\\implies h \\\\geq \\\\log_2(n!)<\/p>\n<p>     <\/span><span class=\"katex-html\"><span class=\"base\"><span class=\"strut\" style=\"height: 1.0351em;vertical-align: -0.136em\"><\/span><span class=\"mord\"><span class=\"mord\">2<\/span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height: 0.8991em\"><span class=\"\" style=\"top: -3.113em;margin-right: 0.05em\"><span class=\"pstrut\" style=\"height: 2.7em\"><\/span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mathnormal mtight\">h<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><span class=\"mrel\">\u2265<\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><\/span><span class=\"base\"><span class=\"strut\" style=\"height: 0.7184em;vertical-align: -0.024em\"><\/span><span class=\"mord mathnormal\">n<\/span><span class=\"mclose\">!<\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><span class=\"mrel\">\u27f9<\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><\/span><span class=\"base\"><span class=\"strut\" style=\"height: 0.8304em;vertical-align: -0.136em\"><\/span><span class=\"mord mathnormal\">h<\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><span class=\"mrel\">\u2265<\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><\/span><span class=\"base\"><span class=\"strut\" style=\"height: 1em;vertical-align: -0.25em\"><\/span><span class=\"mop\"><span class=\"mop\">lo<span style=\"margin-right: 0.0139em\">g<\/span><\/span><span class=\"msupsub\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height: 0.207em\"><span class=\"\" style=\"top: -2.4559em;margin-right: 0.05em\"><span class=\"pstrut\" style=\"height: 2.7em\"><\/span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2<\/span><\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height: 0.2441em\"><span class=\"\"><\/span><\/span><\/span><\/span><\/span><\/span><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\">n<\/span><span class=\"mclose\">!)<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p>\u7531\u65af\u7279\u6797\u516c\u5f0f&#xff0c;log\u2082(n!) &#061; \u0398(n log n)&#xff0c;\u56e0\u6b64\u6bd4\u8f83\u6392\u5e8f\u7684\u6700\u574f\u65f6\u95f4\u590d\u6742\u5ea6\u4e0b\u754c\u4e3a O(n log n)\u3002<\/p>\n<p>\u8fd9\u610f\u5473\u7740&#xff1a;\u65e0\u8bba\u4f60\u600e\u4e48\u8bbe\u8ba1\u6bd4\u8f83\u6392\u5e8f\u7b97\u6cd5&#xff0c;\u6700\u574f\u60c5\u51b5\u4e0b\u4e0d\u53ef\u80fd\u4f18\u4e8e O(n log n)\u3002\u8fd9\u662f\u4fe1\u606f\u8bba\u7ed9\u51fa\u7684\u786c\u9650\u5236\u2014\u2014\u6bcf\u6b21\u6bd4\u8f83\u53ea\u63d0\u4f9b 1 bit \u7684\u4fe1\u606f&#xff0c;\u800c\u6392\u5e8f\u9700\u8981 log\u2082(n!) bits \u7684\u4fe1\u606f\u91cf\u3002<\/p>\n<p>\u975e\u6bd4\u8f83\u6392\u5e8f\u4e4b\u6240\u4ee5\u80fd\u7a81\u7834\u8fd9\u4e2a\u4e0b\u754c&#xff0c;\u662f\u56e0\u4e3a\u5b83\u4e0d\u4f9d\u8d56\u6bd4\u8f83&#xff0c;\u800c\u662f\u5229\u7528\u5143\u7d20\u7684\u989d\u5916\u4fe1\u606f&#xff08;\u5982\u53d6\u503c\u8303\u56f4&#xff09;&#xff0c;\u6bcf\u6b21\u64cd\u4f5c\u83b7\u53d6\u8d85\u8fc7 1 bit \u7684\u4fe1\u606f\u3002<\/p>\n<h4>1.5 \u5168\u6587\u590d\u6742\u5ea6\u901f\u67e5\u8868<\/h4>\n<table>\n<tr>\u7b97\u6cd5\u6700\u597d\u5e73\u5747\u6700\u574f\u7a7a\u95f4\u7a33\u5b9a\u9002\u7528\u573a\u666f<\/tr>\n<tbody>\n<tr>\n<td>\u5192\u6ce1<\/td>\n<td>O(n)<\/td>\n<td>O(n\u00b2)<\/td>\n<td>O(n\u00b2)<\/td>\n<td>O(1)<\/td>\n<td>\u2713<\/td>\n<td>\u6559\u5b66\u3001\u5c0f\u6570\u7ec4<\/td>\n<\/tr>\n<tr>\n<td>\u9009\u62e9<\/td>\n<td>O(n\u00b2)<\/td>\n<td>O(n\u00b2)<\/td>\n<td>O(n\u00b2)<\/td>\n<td>O(1)<\/td>\n<td>\u2717<\/td>\n<td>\u4ea4\u6362\u4ee3\u4ef7\u9ad8\u7684\u573a\u666f<\/td>\n<\/tr>\n<tr>\n<td>\u63d2\u5165<\/td>\n<td>O(n)<\/td>\n<td>O(n\u00b2)<\/td>\n<td>O(n\u00b2)<\/td>\n<td>O(1)<\/td>\n<td>\u2713<\/td>\n<td>\u5c0f\u6570\u7ec4\u3001\u8fd1\u4e4e\u6709\u5e8f<\/td>\n<\/tr>\n<tr>\n<td>\u5f52\u5e76<\/td>\n<td>O(nlogn)<\/td>\n<td>O(nlogn)<\/td>\n<td>O(nlogn)<\/td>\n<td>O(n)<\/td>\n<td>\u2713<\/td>\n<td>\u5927\u6570\u636e\u3001\u5916\u90e8\u6392\u5e8f\u3001\u94fe\u8868<\/td>\n<\/tr>\n<tr>\n<td>\u5feb\u6392<\/td>\n<td>O(nlogn)<\/td>\n<td>O(nlogn)<\/td>\n<td>O(n\u00b2)<\/td>\n<td>O(logn)<\/td>\n<td>\u2717<\/td>\n<td>\u901a\u7528\u6392\u5e8f\u3001\u5185\u5b58\u6392\u5e8f<\/td>\n<\/tr>\n<tr>\n<td>\u5806\u6392<\/td>\n<td>O(nlogn)<\/td>\n<td>O(nlogn)<\/td>\n<td>O(nlogn)<\/td>\n<td>O(1)<\/td>\n<td>\u2717<\/td>\n<td>\u5185\u5b58\u53d7\u9650\u3001Top-K<\/td>\n<\/tr>\n<tr>\n<td>\u8ba1\u6570<\/td>\n<td>O(n&#043;k)<\/td>\n<td>O(n&#043;k)<\/td>\n<td>O(n&#043;k)<\/td>\n<td>O(n&#043;k)<\/td>\n<td>\u2713<\/td>\n<td>\u53d6\u503c\u8303\u56f4\u5c0f\u7684\u6574\u6570<\/td>\n<\/tr>\n<tr>\n<td>\u57fa\u6570<\/td>\n<td>O(d\u00b7n)<\/td>\n<td>O(d\u00b7n)<\/td>\n<td>O(d\u00b7n)<\/td>\n<td>O(n&#043;k)<\/td>\n<td>\u2713<\/td>\n<td>\u5b9a\u957f\u6570\u5b57\/\u5b57\u7b26\u4e32<\/td>\n<\/tr>\n<tr>\n<td>\u6876\u6392<\/td>\n<td>O(n&#043;k)<\/td>\n<td>O(n&#043;k)<\/td>\n<td>O(n\u00b2)<\/td>\n<td>O(n&#043;k)<\/td>\n<td>\u2713<\/td>\n<td>\u5747\u5300\u5206\u5e03\u7684\u6570\u636e<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u88681-1&#xff1a;9\u79cd\u6392\u5e8f\u7b97\u6cd5\u590d\u6742\u5ea6\u901f\u67e5\u8868\u2014\u2014k\u4e3a\u53d6\u503c\u8303\u56f4&#xff0c;d\u4e3a\u6700\u5927\u4f4d\u6570<\/p>\n<p>\u63a5\u4e0b\u6765\u9010\u4e2a\u6df1\u5165\u6bcf\u4e2a\u7b97\u6cd5\u3002<\/p>\n<hr \/>\n<h3>\u7b2c2\u7ae0 \u5192\u6ce1\u6392\u5e8f&#xff1a;\u4ece\u6734\u7d20\u5230\u4f18\u5316\u7684\u5b8c\u6574\u63a8\u5bfc<\/h3>\n<h4>2.1 \u6838\u5fc3\u601d\u60f3<\/h4>\n<p>\u5192\u6ce1\u6392\u5e8f\u7684\u601d\u8def\u6700\u76f4\u89c2&#xff1a;\u76f8\u90bb\u5143\u7d20\u4e24\u4e24\u6bd4\u8f83&#xff0c;\u9006\u5e8f\u5219\u4ea4\u6362\u3002\u6bcf\u4e00\u8f6e\u904d\u5386\u90fd\u4f1a\u628a\u5f53\u524d\u672a\u6392\u5e8f\u90e8\u5206\u7684\u6700\u5927\u503c&#034;\u5192\u6ce1&#034;\u5230\u672b\u5c3e&#xff0c;\u5c31\u50cf\u6c34\u5e95\u7684\u6c14\u6ce1\u6d6e\u5411\u6c34\u9762\u3002<\/p>\n<p>\u4e3a\u4ec0\u4e48\u662f&#034;\u76f8\u90bb&#034;\u6bd4\u8f83&#xff1f;\u56e0\u4e3a\u53ea\u6709\u76f8\u90bb\u4ea4\u6362\u624d\u80fd\u4fdd\u8bc1\u7a33\u5b9a\u6027\u2014\u2014\u4e0d\u76f8\u90bb\u7684\u4ea4\u6362\u53ef\u80fd\u8de8\u8fc7\u76f8\u7b49\u7684\u5143\u7d20\u3002\u8fd9\u4e00\u70b9\u5728\u9009\u62e9\u6392\u5e8f\u4e2d\u4f1a\u5f62\u6210\u5bf9\u6bd4\u3002<\/p>\n<h4>2.2 \u6267\u884c\u8fc7\u7a0b\u56fe\u89e3<\/h4>\n<p>\u4ee5 [5, 3, 8, 1, 2] \u4e3a\u4f8b&#xff0c;\u6f14\u793a\u5b8c\u6574\u6267\u884c\u8fc7\u7a0b&#xff1a;<\/p>\n<p>  #mermaid-svg-unbOt12un9hKJ58d{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-unbOt12un9hKJ58d .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-unbOt12un9hKJ58d .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-unbOt12un9hKJ58d .error-icon{fill:#552222;}#mermaid-svg-unbOt12un9hKJ58d .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-unbOt12un9hKJ58d .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-unbOt12un9hKJ58d .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-unbOt12un9hKJ58d .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-unbOt12un9hKJ58d .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-unbOt12un9hKJ58d .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-unbOt12un9hKJ58d .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-unbOt12un9hKJ58d .marker{fill:#333333;stroke:#333333;}#mermaid-svg-unbOt12un9hKJ58d .marker.cross{stroke:#333333;}#mermaid-svg-unbOt12un9hKJ58d svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-unbOt12un9hKJ58d p{margin:0;}#mermaid-svg-unbOt12un9hKJ58d .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-unbOt12un9hKJ58d .cluster-label text{fill:#333;}#mermaid-svg-unbOt12un9hKJ58d .cluster-label span{color:#333;}#mermaid-svg-unbOt12un9hKJ58d .cluster-label span p{background-color:transparent;}#mermaid-svg-unbOt12un9hKJ58d .label text,#mermaid-svg-unbOt12un9hKJ58d span{fill:#333;color:#333;}#mermaid-svg-unbOt12un9hKJ58d .node rect,#mermaid-svg-unbOt12un9hKJ58d .node circle,#mermaid-svg-unbOt12un9hKJ58d .node ellipse,#mermaid-svg-unbOt12un9hKJ58d .node polygon,#mermaid-svg-unbOt12un9hKJ58d .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-unbOt12un9hKJ58d .rough-node .label text,#mermaid-svg-unbOt12un9hKJ58d .node .label text,#mermaid-svg-unbOt12un9hKJ58d .image-shape .label,#mermaid-svg-unbOt12un9hKJ58d .icon-shape .label{text-anchor:middle;}#mermaid-svg-unbOt12un9hKJ58d .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-unbOt12un9hKJ58d .rough-node .label,#mermaid-svg-unbOt12un9hKJ58d .node .label,#mermaid-svg-unbOt12un9hKJ58d .image-shape .label,#mermaid-svg-unbOt12un9hKJ58d .icon-shape .label{text-align:center;}#mermaid-svg-unbOt12un9hKJ58d .node.clickable{cursor:pointer;}#mermaid-svg-unbOt12un9hKJ58d .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-unbOt12un9hKJ58d .arrowheadPath{fill:#333333;}#mermaid-svg-unbOt12un9hKJ58d .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-unbOt12un9hKJ58d .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-unbOt12un9hKJ58d .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-unbOt12un9hKJ58d .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-unbOt12un9hKJ58d .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-unbOt12un9hKJ58d .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-unbOt12un9hKJ58d .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-unbOt12un9hKJ58d .cluster text{fill:#333;}#mermaid-svg-unbOt12un9hKJ58d .cluster span{color:#333;}#mermaid-svg-unbOt12un9hKJ58d div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-unbOt12un9hKJ58d .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-unbOt12un9hKJ58d rect.text{fill:none;stroke-width:0;}#mermaid-svg-unbOt12un9hKJ58d .icon-shape,#mermaid-svg-unbOt12un9hKJ58d .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-unbOt12un9hKJ58d .icon-shape p,#mermaid-svg-unbOt12un9hKJ58d .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-unbOt12un9hKJ58d .icon-shape .label rect,#mermaid-svg-unbOt12un9hKJ58d .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-unbOt12un9hKJ58d .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-unbOt12un9hKJ58d .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-unbOt12un9hKJ58d :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c4\u8f6e<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[1, 2, 3, 5, 8] \u6bd4\u8f831\u548c2 \u2192 \u4e0d\u4ea4\u6362 \u2192 \u6709\u5e8f&#xff01;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c3\u8f6e<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[3, 1, 2, 5, 8] \u6bd4\u8f833\u548c1 \u2192 \u4ea4\u6362 \u2192 [1, 3, 2, 5, 8]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[1, 3, 2, 5, 8] \u6bd4\u8f833\u548c2 \u2192 \u4ea4\u6362 \u2192 [1, 2, 3, 5, 8]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c2\u8f6e&#xff1a;\u5728\u5269\u4f59[3,5,1,2]\u4e2d\u5192\u6ce1<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[3, 5, 1, 2, 8] \u6bd4\u8f833\u548c5 \u2192 \u4e0d\u4ea4\u6362<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[3, 5, 1, 2, 8] \u6bd4\u8f835\u548c1 \u2192 \u4ea4\u6362 \u2192 [3, 1, 5, 2, 8]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[3, 1, 5, 2, 8] \u6bd4\u8f835\u548c2 \u2192 \u4ea4\u6362 \u2192 [3, 1, 2, 5, 8]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c1\u8f6e&#xff1a;\u628a\u6700\u5927\u503c8\u5192\u6ce1\u5230\u672b\u5c3e<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[5, 3, 8, 1, 2] \u6bd4\u8f835\u548c3 \u2192 \u4ea4\u6362 \u2192 [3, 5, 8, 1, 2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[3, 5, 8, 1, 2] \u6bd4\u8f835\u548c8 \u2192 \u4e0d\u4ea4\u6362<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[3, 5, 8, 1, 2] \u6bd4\u8f838\u548c1 \u2192 \u4ea4\u6362 \u2192 [3, 5, 1, 8, 2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[3, 5, 1, 8, 2] \u6bd4\u8f838\u548c2 \u2192 \u4ea4\u6362 \u2192 [3, 5, 1, 2, 8]<\/p>\n<p><\/span><\/p>\n<p>\u56fe2-1&#xff1a;\u5192\u6ce1\u6392\u5e8f\u5b8c\u6574\u6267\u884c\u8fc7\u7a0b\u2014\u2014\u6bcf\u8f6e\u628a\u4e00\u4e2a\u6700\u5927\u503c&#034;\u5192\u6ce1&#034;\u5230\u672b\u5c3e&#xff08;\u6a59\u8272&#xff09;&#xff0c;\u7b2c4\u8f6e\u65e0\u4ea4\u6362\u8bf4\u660e\u5df2\u6709\u5e8f&#xff08;\u7eff\u8272&#xff09;<\/p>\n<h4>2.3 \u4ee3\u7801\u5b9e\u73b0<\/h4>\n<h5>2.3.1 \u6734\u7d20\u7248\u672c<\/h5>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">bubbleSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5916\u5c42\u5faa\u73af&#xff1a;\u5171\u9700 n-1 \u8f6e<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u5185\u5c42\u5faa\u73af&#xff1a;\u6bcf\u8f6e\u6bd4\u8f83\u5230 n-1-i&#xff08;\u672b\u5c3e i \u4e2a\u5df2\u6392\u597d&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> j <span class=\"token operator\">&lt;<\/span> n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span> <span class=\"token operator\">&#8211;<\/span> i<span class=\"token punctuation\">;<\/span> j<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token comment\">\/\/ \u76f8\u90bb\u9006\u5e8f\u5219\u4ea4\u6362<\/span><br \/>\n                <span class=\"token keyword\">int<\/span> temp <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u6ce8\u610f\u6bd4\u8f83\u6761\u4ef6\u662f arr[j] &gt; arr[j &#043; 1] \u800c\u4e0d\u662f &gt;&#061;\u3002\u5982\u679c\u7528 &gt;&#061;&#xff0c;\u76f8\u7b49\u7684\u5143\u7d20\u4e5f\u4f1a\u4ea4\u6362&#xff0c;\u867d\u7136\u7ed3\u679c\u4e0d\u5f71\u54cd\u987a\u5e8f&#xff0c;\u4f46\u4f1a\u591a\u505a\u65e0\u610f\u4e49\u7684\u4ea4\u6362\u64cd\u4f5c&#xff0c;\u66f4\u91cd\u8981\u7684\u662f\u4f1a\u7834\u574f\u7a33\u5b9a\u6027\u2014\u2014\u76f8\u7b49\u5143\u7d20\u4e0d\u5e94\u8be5\u88ab\u4ea4\u6362\u3002<\/p>\n<h5>2.3.2 \u4f18\u5316\u7248\u672c&#xff1a;\u63d0\u524d\u7ec8\u6b62<\/h5>\n<p>\u6734\u7d20\u7248\u672c\u7684\u95ee\u9898\u5728\u4e8e&#xff1a;\u5373\u4f7f\u6570\u7ec4\u5df2\u7ecf\u6709\u5e8f&#xff0c;\u5b83\u4e5f\u4f1a\u50bb\u50bb\u5730\u8dd1\u5b8c\u6240\u6709\u8f6e\u6b21\u3002\u4f18\u5316\u601d\u8def\u662f\u52a0\u4e00\u4e2a swapped \u6807\u8bb0\u2014\u2014\u5982\u679c\u67d0\u4e00\u8f6e\u6ca1\u6709\u4efb\u4f55\u4ea4\u6362&#xff0c;\u8bf4\u660e\u6570\u7ec4\u5df2\u7ecf\u6709\u5e8f&#xff0c;\u53ef\u4ee5\u63d0\u524d\u7ec8\u6b62\u3002<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">bubbleSortOptimized<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">boolean<\/span> swapped <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">false<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u6807\u8bb0\u672c\u8f6e\u662f\u5426\u53d1\u751f\u4ea4\u6362<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> j <span class=\"token operator\">&lt;<\/span> n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span> <span class=\"token operator\">&#8211;<\/span> i<span class=\"token punctuation\">;<\/span> j<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token keyword\">int<\/span> temp <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">;<\/span><br \/>\n                swapped <span class=\"token operator\">&#061;<\/span> <span class=\"token boolean\">true<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token operator\">!<\/span>swapped<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">break<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u672c\u8f6e\u65e0\u4ea4\u6362&#xff0c;\u5df2\u6709\u5e8f<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u8fd9\u4e2a\u4f18\u5316\u8ba9\u6700\u597d\u60c5\u51b5&#xff08;\u5df2\u6709\u5e8f\u6570\u7ec4&#xff09;\u4ece O(n\u00b2) \u964d\u5230 O(n)&#xff1a;\u53ea\u9700\u4e00\u8f6e\u904d\u5386&#xff0c;\u53d1\u73b0\u6ca1\u6709\u4ea4\u6362\u5c31\u9000\u51fa\u3002<\/p>\n<h5>2.3.3 \u7ec8\u6781\u4f18\u5316&#xff1a;\u8bb0\u5f55\u6700\u540e\u4ea4\u6362\u4f4d\u7f6e<\/h5>\n<p>\u8fd8\u53ef\u4ee5\u8fdb\u4e00\u6b65\u4f18\u5316&#xff1a;\u8bb0\u5f55\u6bcf\u8f6e\u6700\u540e\u4e00\u6b21\u4ea4\u6362\u7684\u4f4d\u7f6e&#xff0c;\u8be5\u4f4d\u7f6e\u4e4b\u540e\u7684\u5143\u7d20\u5df2\u7ecf\u6709\u5e8f&#xff0c;\u4e0b\u4e00\u8f6e\u4e0d\u9700\u8981\u518d\u6bd4\u8f83\u3002<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">bubbleSortFinal<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> lastSwapPos <span class=\"token operator\">&#061;<\/span> n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u6700\u540e\u4ea4\u6362\u4f4d\u7f6e<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>lastSwapPos <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> k <span class=\"token operator\">&#061;<\/span> lastSwapPos<span class=\"token punctuation\">;<\/span><br \/>\n        lastSwapPos <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u91cd\u7f6e&#xff0c;\u5982\u679c\u672c\u8f6e\u65e0\u4ea4\u6362\u5219\u4e3a0&#xff0c;\u5faa\u73af\u7ed3\u675f<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> j <span class=\"token operator\">&lt;<\/span> k<span class=\"token punctuation\">;<\/span> j<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token keyword\">int<\/span> temp <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">;<\/span><br \/>\n                lastSwapPos <span class=\"token operator\">&#061;<\/span> j<span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u66f4\u65b0\u6700\u540e\u4ea4\u6362\u4f4d\u7f6e<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u8fd9\u4e2a\u7248\u672c\u5bf9&#034;\u5c3e\u90e8\u5df2\u57fa\u672c\u6709\u5e8f&#034;\u7684\u6570\u7ec4\u6548\u679c\u6700\u597d\u3002\u4f8b\u5982 [3, 1, 2, 4, 5, 6, 7, 8]&#xff0c;\u7b2c\u4e00\u8f6e\u4ea4\u6362\u5728\u4f4d\u7f6e1\u5c31\u7ed3\u675f\u4e86&#xff0c;\u540e\u7eed\u53ea\u9700\u8981\u6bd4\u8f83\u524d3\u4e2a\u5143\u7d20\u3002<\/p>\n<h4>2.4 \u590d\u6742\u5ea6\u5206\u6790<\/h4>\n<p>\u65f6\u95f4\u590d\u6742\u5ea6&#xff1a;<\/p>\n<table>\n<tr>\u60c5\u51b5\u590d\u6742\u5ea6\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u6700\u597d<\/td>\n<td>O(n)<\/td>\n<td>\u6570\u7ec4\u5df2\u6709\u5e8f&#xff0c;\u52a0swapped\u4f18\u5316\u540e\u4e00\u8f6e\u5c31\u9000\u51fa<\/td>\n<\/tr>\n<tr>\n<td>\u5e73\u5747<\/td>\n<td>O(n\u00b2)<\/td>\n<td>\u5e73\u5747\u9006\u5e8f\u5bf9\u6570\u4e3a n(n-1)\/4&#xff0c;\u6bcf\u6b21\u4ea4\u6362\u6d88\u9664\u4e00\u4e2a\u9006\u5e8f\u5bf9<\/td>\n<\/tr>\n<tr>\n<td>\u6700\u574f<\/td>\n<td>O(n\u00b2)<\/td>\n<td>\u5b8c\u5168\u9006\u5e8f&#xff0c;\u6bcf\u4e00\u5bf9\u90fd\u8981\u4ea4\u6362<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u4e3a\u4ec0\u4e48\u5e73\u5747\u662fO(n\u00b2)&#xff1a;\u8fd9\u548c\u9006\u5e8f\u5bf9\u6709\u5173\u3002\u4e00\u4e2a\u957f\u5ea6\u4e3an\u7684\u6570\u7ec4&#xff0c;\u5e73\u5747\u6709 n(n-1)\/4 \u4e2a\u9006\u5e8f\u5bf9\u3002\u5192\u6ce1\u6392\u5e8f\u6bcf\u6b21\u4ea4\u6362\u6070\u597d\u6d88\u9664\u4e00\u4e2a\u9006\u5e8f\u5bf9&#xff0c;\u6240\u4ee5\u5e73\u5747\u4ea4\u6362\u6b21\u6570\u662f O(n\u00b2)\u3002<\/p>\n<p>\u7a7a\u95f4\u590d\u6742\u5ea6&#xff1a;O(1)&#xff0c;\u539f\u5730\u6392\u5e8f&#xff0c;\u53ea\u9700\u8981\u4e00\u4e2a\u4e34\u65f6\u53d8\u91cf\u7528\u4e8e\u4ea4\u6362\u3002<\/p>\n<h4>2.5 \u7a33\u5b9a\u6027\u8bc1\u660e<\/h4>\n<p>\u5192\u6ce1\u6392\u5e8f\u662f\u7a33\u5b9a\u7684\u3002<\/p>\n<p>\u8bc1\u660e&#xff1a;\u5192\u6ce1\u6392\u5e8f\u53ea\u6bd4\u8f83\u76f8\u90bb\u5143\u7d20&#xff0c;\u4e14\u6bd4\u8f83\u6761\u4ef6\u662f &gt;&#xff08;\u4e25\u683c\u5927\u4e8e&#xff09;\u3002\u5bf9\u4e8e\u4e24\u4e2a\u76f8\u7b49\u7684\u5143\u7d20 a[i] \u548c a[j]&#xff08;i &lt; j&#xff09;&#xff0c;arr[j] &gt; arr[j&#043;1] \u6761\u4ef6\u4e0d\u6210\u7acb&#xff0c;\u4e0d\u4f1a\u53d1\u751f\u4ea4\u6362&#xff0c;\u56e0\u6b64\u5b83\u4eec\u7684\u76f8\u5bf9\u987a\u5e8f\u4e0d\u4f1a\u6539\u53d8\u3002<\/p>\n<p>\u5173\u952e\u5728\u4e8e&#034;\u76f8\u90bb&#034;\u548c&#034;\u4e25\u683c\u5927\u4e8e&#034;\u4e24\u4e2a\u6761\u4ef6\u7f3a\u4e00\u4e0d\u53ef\u3002\u5982\u679c\u4e0d\u662f\u76f8\u90bb\u4ea4\u6362&#xff08;\u5982\u9009\u62e9\u6392\u5e8f&#xff09;&#xff0c;\u5373\u4f7f\u6bd4\u8f83\u6761\u4ef6\u662f &gt; \u4e5f\u53ef\u80fd\u4e0d\u7a33\u5b9a&#xff1b;\u5982\u679c\u7528 &gt;&#061;&#xff0c;\u76f8\u7b49\u7684\u76f8\u90bb\u5143\u7d20\u4e5f\u4f1a\u4ea4\u6362&#xff0c;\u540c\u6837\u4e0d\u7a33\u5b9a\u3002<\/p>\n<h4>2.6 \u9002\u7528\u573a\u666f\u4e0e\u5c40\u9650<\/h4>\n<p>\u9002\u7528\u573a\u666f&#xff1a;<\/p>\n<ul>\n<li>\u6559\u5b66&#xff1a;\u6700\u76f4\u89c2\u7684\u6392\u5e8f\u7b97\u6cd5&#xff0c;\u9002\u5408\u5165\u95e8<\/li>\n<li>\u6570\u636e\u91cf\u6781\u5c0f&#xff08;n &lt; 20&#xff09;\u4e14\u5bf9\u4ee3\u7801\u7b80\u6d01\u6027\u8981\u6c42\u9ad8<\/li>\n<li>\u6570\u636e\u8fd1\u4e4e\u6709\u5e8f\u65f6&#xff0c;\u4f18\u5316\u7248\u5192\u6ce1\u63a5\u8fd1 O(n)<\/li>\n<\/ul>\n<p>\u5c40\u9650&#xff1a;<\/p>\n<ul>\n<li>\u5e73\u5747 O(n\u00b2) \u592a\u6162&#xff0c;\u4e0d\u9002\u5408\u751f\u4ea7\u73af\u5883<\/li>\n<li>\u4ea4\u6362\u64cd\u4f5c\u591a&#xff08;\u6bcf\u6b21\u53ea\u6d88\u9664\u4e00\u4e2a\u9006\u5e8f\u5bf9&#xff09;&#xff0c;\u5e38\u6570\u56e0\u5b50\u8f83\u5927<\/li>\n<\/ul>\n<hr \/>\n<h3>\u7b2c3\u7ae0 \u9009\u62e9\u6392\u5e8f&#xff1a;\u4e3a\u4ec0\u4e48\u5b83\u603b\u662fO(n\u00b2)<\/h3>\n<h4>3.1 \u6838\u5fc3\u601d\u60f3<\/h4>\n<p>\u9009\u62e9\u6392\u5e8f\u7684\u601d\u8def\u662f&#xff1a;\u6bcf\u8f6e\u4ece\u672a\u6392\u5e8f\u90e8\u5206\u627e\u5230\u6700\u5c0f\u503c&#xff0c;\u653e\u5230\u5df2\u6392\u5e8f\u90e8\u5206\u7684\u672b\u5c3e\u3002\u5b83\u548c\u5192\u6ce1\u6392\u5e8f\u7684\u533a\u522b\u5728\u4e8e\u2014\u2014\u5192\u6ce1\u662f\u4e0d\u65ad\u4ea4\u6362\u628a\u6700\u5927\u503c&#034;\u63a8&#034;\u5230\u672b\u5c3e&#xff0c;\u9009\u62e9\u662f\u5148\u627e\u5230\u6700\u5c0f\u503c\u518d\u4e00\u6b21\u6027\u4ea4\u6362\u5230\u4f4d\u3002<\/p>\n<p>\u9009\u62e9\u6392\u5e8f\u7684\u4f18\u52bf\u5728\u4e8e\u4ea4\u6362\u6b21\u6570\u6700\u5c11&#xff1a;n \u4e2a\u5143\u7d20\u6700\u591a\u4ea4\u6362 n-1 \u6b21\u3002\u8fd9\u5bf9\u4e8e&#034;\u4ea4\u6362\u4ee3\u4ef7\u9ad8&#034;\u7684\u573a\u666f&#xff08;\u5982\u5916\u90e8\u6392\u5e8f\u4e2d\u79fb\u52a8\u5927\u6587\u4ef6&#xff09;\u5f88\u6709\u4ef7\u503c\u3002<\/p>\n<h4>3.2 \u6267\u884c\u8fc7\u7a0b\u56fe\u89e3<\/h4>\n<p>\u4ee5 [5, 3, 8, 1, 2] \u4e3a\u4f8b&#xff1a;<\/p>\n<p>  #mermaid-svg-MxEOALRK8R7wcFqa{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-MxEOALRK8R7wcFqa .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-MxEOALRK8R7wcFqa .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-MxEOALRK8R7wcFqa .error-icon{fill:#552222;}#mermaid-svg-MxEOALRK8R7wcFqa .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-MxEOALRK8R7wcFqa .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-MxEOALRK8R7wcFqa .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-MxEOALRK8R7wcFqa .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-MxEOALRK8R7wcFqa .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-MxEOALRK8R7wcFqa .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-MxEOALRK8R7wcFqa .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-MxEOALRK8R7wcFqa .marker{fill:#333333;stroke:#333333;}#mermaid-svg-MxEOALRK8R7wcFqa .marker.cross{stroke:#333333;}#mermaid-svg-MxEOALRK8R7wcFqa svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-MxEOALRK8R7wcFqa p{margin:0;}#mermaid-svg-MxEOALRK8R7wcFqa .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-MxEOALRK8R7wcFqa .cluster-label text{fill:#333;}#mermaid-svg-MxEOALRK8R7wcFqa .cluster-label span{color:#333;}#mermaid-svg-MxEOALRK8R7wcFqa .cluster-label span p{background-color:transparent;}#mermaid-svg-MxEOALRK8R7wcFqa .label text,#mermaid-svg-MxEOALRK8R7wcFqa span{fill:#333;color:#333;}#mermaid-svg-MxEOALRK8R7wcFqa .node rect,#mermaid-svg-MxEOALRK8R7wcFqa .node circle,#mermaid-svg-MxEOALRK8R7wcFqa .node ellipse,#mermaid-svg-MxEOALRK8R7wcFqa .node polygon,#mermaid-svg-MxEOALRK8R7wcFqa .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-MxEOALRK8R7wcFqa .rough-node .label text,#mermaid-svg-MxEOALRK8R7wcFqa .node .label text,#mermaid-svg-MxEOALRK8R7wcFqa .image-shape .label,#mermaid-svg-MxEOALRK8R7wcFqa .icon-shape .label{text-anchor:middle;}#mermaid-svg-MxEOALRK8R7wcFqa .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-MxEOALRK8R7wcFqa .rough-node .label,#mermaid-svg-MxEOALRK8R7wcFqa .node .label,#mermaid-svg-MxEOALRK8R7wcFqa .image-shape .label,#mermaid-svg-MxEOALRK8R7wcFqa .icon-shape .label{text-align:center;}#mermaid-svg-MxEOALRK8R7wcFqa .node.clickable{cursor:pointer;}#mermaid-svg-MxEOALRK8R7wcFqa .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-MxEOALRK8R7wcFqa .arrowheadPath{fill:#333333;}#mermaid-svg-MxEOALRK8R7wcFqa .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-MxEOALRK8R7wcFqa .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-MxEOALRK8R7wcFqa .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-MxEOALRK8R7wcFqa .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-MxEOALRK8R7wcFqa .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-MxEOALRK8R7wcFqa .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-MxEOALRK8R7wcFqa .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-MxEOALRK8R7wcFqa .cluster text{fill:#333;}#mermaid-svg-MxEOALRK8R7wcFqa .cluster span{color:#333;}#mermaid-svg-MxEOALRK8R7wcFqa div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-MxEOALRK8R7wcFqa .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-MxEOALRK8R7wcFqa rect.text{fill:none;stroke-width:0;}#mermaid-svg-MxEOALRK8R7wcFqa .icon-shape,#mermaid-svg-MxEOALRK8R7wcFqa .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-MxEOALRK8R7wcFqa .icon-shape p,#mermaid-svg-MxEOALRK8R7wcFqa .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-MxEOALRK8R7wcFqa .icon-shape .label rect,#mermaid-svg-MxEOALRK8R7wcFqa .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-MxEOALRK8R7wcFqa .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-MxEOALRK8R7wcFqa .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-MxEOALRK8R7wcFqa :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c4\u8f6e&#xff1a;\u5728[5,8]\u4e2d\u627e\u6700\u5c0f\u503c<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u626b\u63cf \u2192 \u6700\u5c0f\u503c&#061;5&#xff08;\u7d22\u5f153&#xff09;&#xff0c;\u5df2\u5728\u6b63\u786e\u4f4d\u7f6e<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362arr[3]\u548carr[3] \u2192 [1, 2, 3, 5, 8]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c3\u8f6e&#xff1a;\u5728[8,5,3]\u4e2d\u627e\u6700\u5c0f\u503c<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u626b\u63cf \u2192 \u6700\u5c0f\u503c&#061;3&#xff08;\u539f\u7d22\u5f154&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362arr[2]\u548carr[4] \u2192 [1, 2, 3, 5, 8]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c2\u8f6e&#xff1a;\u5728[3,8,5,2]\u4e2d\u627e\u6700\u5c0f\u503c<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u626b\u63cf \u2192 \u6700\u5c0f\u503c&#061;2&#xff08;\u539f\u7d22\u5f154&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362arr[1]\u548carr[4] \u2192 [1, 2, 8, 5, 3]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c1\u8f6e&#xff1a;\u5728[5,3,8,1,2]\u4e2d\u627e\u6700\u5c0f\u503c<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u626b\u63cf\u5168\u90e8 \u2192 \u6700\u5c0f\u503c&#061;1&#xff08;\u7d22\u5f153&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362arr[0]\u548carr[3] \u2192 [1, 3, 8, 5, 2]<\/p>\n<p><\/span><\/p>\n<p>\u56fe3-1&#xff1a;\u9009\u62e9\u6392\u5e8f\u6267\u884c\u8fc7\u7a0b\u2014\u2014\u6bcf\u8f6e\u627e\u6700\u5c0f\u503c\u5e76\u4e0e\u5f53\u524d\u4f4d\u7f6e\u4ea4\u6362&#xff08;\u6a59\u8272\u4e3a\u672c\u8f6e\u4ea4\u6362&#xff0c;\u7eff\u8272\u4e3a\u5df2\u6392\u5e8f\u90e8\u5206&#xff09;<\/p>\n<h4>3.3 \u4ee3\u7801\u5b9e\u73b0<\/h4>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">selectionSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> minIdx <span class=\"token operator\">&#061;<\/span> i<span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5047\u8bbe\u5f53\u524d\u4f4d\u7f6e\u5c31\u662f\u6700\u5c0f\u503c<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u5728\u672a\u6392\u5e8f\u90e8\u5206\u627e\u6700\u5c0f\u503c\u7684\u7d22\u5f15<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> i <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> j <span class=\"token operator\">&lt;<\/span> n<span class=\"token punctuation\">;<\/span> j<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span> arr<span class=\"token punctuation\">[<\/span>minIdx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                minIdx <span class=\"token operator\">&#061;<\/span> j<span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u628a\u6700\u5c0f\u503c\u4ea4\u6362\u5230\u5f53\u524d\u4f4d\u7f6e<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>minIdx <span class=\"token operator\">!&#061;<\/span> i<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">int<\/span> temp <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>minIdx<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            arr<span class=\"token punctuation\">[<\/span>minIdx<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u6ce8\u610f\u6bd4\u8f83\u6761\u4ef6\u662f &lt;&#xff08;\u4e25\u683c\u5c0f\u4e8e&#xff09;&#xff0c;\u76ee\u7684\u662f\u627e\u5230\u771f\u6b63\u6700\u5c0f\u7684\u5143\u7d20\u3002\u5982\u679c\u7528 &lt;&#061;&#xff0c;\u4f1a\u591a\u505a\u65e0\u610f\u4e49\u7684\u8d4b\u503c&#xff08;\u867d\u7136\u4e0d\u5f71\u54cd\u7ed3\u679c&#xff09;\u3002<\/p>\n<h4>3.4 \u590d\u6742\u5ea6\u5206\u6790<\/h4>\n<p>\u65f6\u95f4\u590d\u6742\u5ea6&#xff1a;<\/p>\n<table>\n<tr>\u60c5\u51b5\u590d\u6742\u5ea6\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u6700\u597d<\/td>\n<td>O(n\u00b2)<\/td>\n<td>\u5373\u4f7f\u6709\u5e8f&#xff0c;\u6bcf\u8f6e\u4e5f\u8981\u5b8c\u6574\u626b\u63cf\u627e\u6700\u5c0f\u503c<\/td>\n<\/tr>\n<tr>\n<td>\u5e73\u5747<\/td>\n<td>O(n\u00b2)<\/td>\n<td>\u6bd4\u8f83\u6b21\u6570\u56fa\u5b9a\u4e3a n(n-1)\/2<\/td>\n<\/tr>\n<tr>\n<td>\u6700\u574f<\/td>\n<td>O(n\u00b2)<\/td>\n<td>\u540c\u4e0a<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u9009\u62e9\u6392\u5e8f\u6700\u7279\u6b8a\u7684\u4e00\u70b9&#xff1a;\u5b83\u7684\u6700\u597d\u3001\u5e73\u5747\u3001\u6700\u574f\u60c5\u51b5\u90fd\u662f O(n\u00b2)\u3002\u539f\u56e0\u5728\u4e8e&#xff0c;\u65e0\u8bba\u6570\u636e\u662f\u5426\u6709\u5e8f&#xff0c;\u6bcf\u4e00\u8f6e\u90fd\u5fc5\u987b\u5b8c\u6574\u626b\u63cf\u672a\u6392\u5e8f\u90e8\u5206\u6765\u786e\u8ba4\u6700\u5c0f\u503c\u2014\u2014\u5b83\u4e0d\u50cf\u5192\u6ce1\u6392\u5e8f\u90a3\u6837\u80fd\u901a\u8fc7&#034;\u65e0\u4ea4\u6362&#034;\u63d0\u524d\u9000\u51fa\u3002<\/p>\n<p>\u5177\u4f53\u8ba1\u7b97\u6bd4\u8f83\u6b21\u6570&#xff1a;\u7b2c1\u8f6e\u6bd4\u8f83 n-1 \u6b21&#xff0c;\u7b2c2\u8f6e n-2 \u6b21&#xff0c;\u2026&#xff0c;\u6700\u540e\u4e00\u8f6e 1 \u6b21&#xff0c;\u603b\u8ba1 1 &#043; 2 &#043; &#8230; &#043; (n-1) &#061; n(n-1)\/2&#xff0c;\u5373 O(n\u00b2)\u3002<\/p>\n<p>\u4f46\u4ea4\u6362\u6b21\u6570\u786e\u5b9e\u662f O(n)&#xff1a;\u6bcf\u8f6e\u6700\u591a\u4e00\u6b21\u4ea4\u6362&#xff0c;\u603b\u8ba1\u6700\u591a n-1 \u6b21\u3002\u8fd9\u662f\u9009\u62e9\u6392\u5e8f\u6bd4\u8f83\u6b21\u6570\u548c\u4ea4\u6362\u6b21\u6570\u7684\u663e\u8457\u4e0d\u5bf9\u79f0\u3002<\/p>\n<p>\u7a7a\u95f4\u590d\u6742\u5ea6&#xff1a;O(1)&#xff0c;\u539f\u5730\u6392\u5e8f\u3002<\/p>\n<h4>3.5 \u7a33\u5b9a\u6027\u5206\u6790<\/h4>\n<p>\u9009\u62e9\u6392\u5e8f\u662f\u4e0d\u7a33\u5b9a\u7684\u3002<\/p>\n<p>\u8fd9\u662f\u521d\u5b66\u8005\u5e38\u72af\u7684\u9519\u8bef\u2014\u2014\u5f88\u591a\u4eba\u4ee5\u4e3a\u9009\u62e9\u6392\u5e8f\u662f\u7a33\u5b9a\u7684&#xff0c;\u56e0\u4e3a\u770b\u8d77\u6765\u5b83\u53ea\u662f&#034;\u627e\u6700\u5c0f\u503c\u518d\u4ea4\u6362&#034;\u3002\u95ee\u9898\u51fa\u5728\u4ea4\u6362\u8fd9\u4e00\u6b65\u3002<\/p>\n<p>\u53cd\u4f8b&#xff1a;\u8003\u8651\u6570\u7ec4 [5a, 5b, 3]&#xff08;5a \u548c 5b \u503c\u76f8\u7b49&#xff0c;\u7528\u4e0b\u6807\u533a\u5206&#xff09;\u3002<\/p>\n<p>\u7b2c1\u8f6e&#xff1a;\u5728 [5a, 5b, 3] \u4e2d\u627e\u6700\u5c0f\u503c \u2192 3&#xff08;\u7d22\u5f152&#xff09;<br \/>\n       \u4ea4\u6362 arr[0] \u548c arr[2] \u2192 [3, 5b, 5a]<\/p>\n<p>5a \u539f\u6765\u5728 5b \u524d\u9762&#xff0c;\u4ea4\u6362\u540e 5a \u8dd1\u5230\u4e86 5b \u540e\u9762\u3002\u76f8\u5bf9\u987a\u5e8f\u88ab\u7834\u574f\u4e86\u3002<\/p>\n<p>\u95ee\u9898\u7684\u6839\u6e90\u662f&#xff1a;\u9009\u62e9\u6392\u5e8f\u7684\u4ea4\u6362\u4e0d\u662f\u76f8\u90bb\u4ea4\u6362&#xff0c;\u800c\u662f\u8de8\u8d8a\u5f0f\u4ea4\u6362\u2014\u2014\u628a\u6700\u5c0f\u503c\u4ece\u8fdc\u5904\u642c\u5230\u5f53\u524d\u4f4d\u7f6e\u65f6&#xff0c;\u53ef\u80fd\u8de8\u8fc7\u4e0e\u5f53\u524d\u4f4d\u7f6e\u5143\u7d20\u76f8\u7b49\u7684\u5176\u4ed6\u5143\u7d20\u3002<\/p>\n<p>  #mermaid-svg-P8izXxG9ns12lymS{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-P8izXxG9ns12lymS .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-P8izXxG9ns12lymS .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-P8izXxG9ns12lymS .error-icon{fill:#552222;}#mermaid-svg-P8izXxG9ns12lymS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-P8izXxG9ns12lymS .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-P8izXxG9ns12lymS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-P8izXxG9ns12lymS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-P8izXxG9ns12lymS .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-P8izXxG9ns12lymS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-P8izXxG9ns12lymS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-P8izXxG9ns12lymS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-P8izXxG9ns12lymS .marker.cross{stroke:#333333;}#mermaid-svg-P8izXxG9ns12lymS svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-P8izXxG9ns12lymS p{margin:0;}#mermaid-svg-P8izXxG9ns12lymS .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-P8izXxG9ns12lymS .cluster-label text{fill:#333;}#mermaid-svg-P8izXxG9ns12lymS .cluster-label span{color:#333;}#mermaid-svg-P8izXxG9ns12lymS .cluster-label span p{background-color:transparent;}#mermaid-svg-P8izXxG9ns12lymS .label text,#mermaid-svg-P8izXxG9ns12lymS span{fill:#333;color:#333;}#mermaid-svg-P8izXxG9ns12lymS .node rect,#mermaid-svg-P8izXxG9ns12lymS .node circle,#mermaid-svg-P8izXxG9ns12lymS .node ellipse,#mermaid-svg-P8izXxG9ns12lymS .node polygon,#mermaid-svg-P8izXxG9ns12lymS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-P8izXxG9ns12lymS .rough-node .label text,#mermaid-svg-P8izXxG9ns12lymS .node .label text,#mermaid-svg-P8izXxG9ns12lymS .image-shape .label,#mermaid-svg-P8izXxG9ns12lymS .icon-shape .label{text-anchor:middle;}#mermaid-svg-P8izXxG9ns12lymS .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-P8izXxG9ns12lymS .rough-node .label,#mermaid-svg-P8izXxG9ns12lymS .node .label,#mermaid-svg-P8izXxG9ns12lymS .image-shape .label,#mermaid-svg-P8izXxG9ns12lymS .icon-shape .label{text-align:center;}#mermaid-svg-P8izXxG9ns12lymS .node.clickable{cursor:pointer;}#mermaid-svg-P8izXxG9ns12lymS .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-P8izXxG9ns12lymS .arrowheadPath{fill:#333333;}#mermaid-svg-P8izXxG9ns12lymS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-P8izXxG9ns12lymS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-P8izXxG9ns12lymS .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-P8izXxG9ns12lymS .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-P8izXxG9ns12lymS .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-P8izXxG9ns12lymS .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-P8izXxG9ns12lymS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-P8izXxG9ns12lymS .cluster text{fill:#333;}#mermaid-svg-P8izXxG9ns12lymS .cluster span{color:#333;}#mermaid-svg-P8izXxG9ns12lymS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-P8izXxG9ns12lymS .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-P8izXxG9ns12lymS rect.text{fill:none;stroke-width:0;}#mermaid-svg-P8izXxG9ns12lymS .icon-shape,#mermaid-svg-P8izXxG9ns12lymS .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-P8izXxG9ns12lymS .icon-shape p,#mermaid-svg-P8izXxG9ns12lymS .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-P8izXxG9ns12lymS .icon-shape .label rect,#mermaid-svg-P8izXxG9ns12lymS .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-P8izXxG9ns12lymS .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-P8izXxG9ns12lymS .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-P8izXxG9ns12lymS :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u9009\u62e9\u6392\u5e8f\u4e0d\u7a33\u5b9a\u793a\u4f8b<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u627e\u6700\u5c0f\u503c&#061;3<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[5a, 5b, 3]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362 arr[0]\u2194arr[2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[3, 5b, 5a]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>5a \u539f\u57285b\u524d<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362\u540e5a\u57285b\u540e \u2190 \u4e0d\u7a33\u5b9a&#xff01;<\/p>\n<p><\/span><\/p>\n<p>\u56fe3-2&#xff1a;\u9009\u62e9\u6392\u5e8f\u4e0d\u7a33\u5b9a\u7684\u539f\u56e0\u2014\u2014\u8de8\u8d8a\u5f0f\u4ea4\u6362\u628a5a\u8df3\u8fc7\u4e865b<\/p>\n<h4>3.6 \u9009\u62e9\u6392\u5e8f vs \u5192\u6ce1\u6392\u5e8f<\/h4>\n<table>\n<tr>\u7ef4\u5ea6\u5192\u6ce1\u6392\u5e8f\u9009\u62e9\u6392\u5e8f<\/tr>\n<tbody>\n<tr>\n<td>\u6700\u597d\u65f6\u95f4<\/td>\n<td>O(n)<\/td>\n<td>O(n\u00b2)<\/td>\n<\/tr>\n<tr>\n<td>\u4ea4\u6362\u6b21\u6570<\/td>\n<td>O(n\u00b2)&#xff08;\u591a&#xff09;<\/td>\n<td>O(n)&#xff08;\u5c11&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>\u7a33\u5b9a\u6027<\/td>\n<td>\u7a33\u5b9a<\/td>\n<td>\u4e0d\u7a33\u5b9a<\/td>\n<\/tr>\n<tr>\n<td>\u6bd4\u8f83\u6b21\u6570<\/td>\n<td>O(n\u00b2)<\/td>\n<td>O(n\u00b2)&#xff08;\u56fa\u5b9a&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>\u81ea\u9002\u5e94<\/td>\n<td>\u662f&#xff08;\u53ef\u63d0\u524d\u7ec8\u6b62&#xff09;<\/td>\n<td>\u5426<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u9009\u62e9\u6392\u5e8f\u7684\u552f\u4e00\u4f18\u52bf\u662f\u4ea4\u6362\u6b21\u6570\u6700\u5c11\u3002\u8fd9\u5728\u5143\u7d20\u672c\u8eab\u5f88\u5927&#xff08;\u5982\u5927\u5bf9\u8c61\u3001\u6587\u4ef6&#xff09;\u4e14\u6bd4\u8f83\u64cd\u4f5c\u5f88\u5feb\u65f6\u624d\u6709\u610f\u4e49\u2014\u2014\u6b64\u65f6\u51cf\u5c11\u4ea4\u6362\u6bd4\u51cf\u5c11\u6bd4\u8f83\u66f4\u91cd\u8981\u3002<\/p>\n<hr \/>\n<h3>\u7b2c4\u7ae0 \u63d2\u5165\u6392\u5e8f&#xff1a;\u5c0f\u6570\u7ec4\u7684\u738b\u8005<\/h3>\n<h4>4.1 \u6838\u5fc3\u601d\u60f3<\/h4>\n<p>\u63d2\u5165\u6392\u5e8f\u6a21\u62df\u6574\u7406\u6251\u514b\u724c\u7684\u8fc7\u7a0b&#xff1a;\u5de6\u624b\u62ff\u7740\u5df2\u6392\u597d\u5e8f\u7684\u724c&#xff0c;\u53f3\u624b\u4ece\u684c\u4e0a\u62ff\u8d77\u4e00\u5f20\u65b0\u724c&#xff0c;\u4ece\u53f3\u5411\u5de6\u5728\u5de6\u624b\u724c\u4e2d\u627e\u5230\u5408\u9002\u4f4d\u7f6e\u63d2\u5165\u3002<\/p>\n<p>\u4e0e\u5192\u6ce1\u548c\u9009\u62e9\u7684&#034;\u6bcf\u8f6e\u9009\u6781\u503c&#034;\u4e0d\u540c&#xff0c;\u63d2\u5165\u6392\u5e8f\u662f&#034;\u6bcf\u8f6e\u5904\u7406\u4e00\u4e2a\u5143\u7d20&#xff0c;\u63d2\u5165\u5230\u6b63\u786e\u4f4d\u7f6e&#034;\u3002\u8fd9\u4e2a\u601d\u8def\u7684\u5173\u952e\u4f18\u52bf\u662f&#xff1a;\u5bf9\u4e8e\u8fd1\u4e4e\u6709\u5e8f\u7684\u6570\u636e&#xff0c;\u63d2\u5165\u6392\u5e8f\u63a5\u8fd1 O(n)&#xff0c;\u56e0\u4e3a\u6bcf\u4e2a\u5143\u7d20\u53ea\u9700\u8981\u6bd4\u8f83\u4e00\u4e24\u6b21\u5c31\u80fd\u627e\u5230\u4f4d\u7f6e\u3002<\/p>\n<h4>4.2 \u6267\u884c\u8fc7\u7a0b\u56fe\u89e3<\/h4>\n<p>\u4ee5 [5, 3, 8, 1, 2] \u4e3a\u4f8b&#xff1a;<\/p>\n<p>  #mermaid-svg-lWBmtuhqFPVz6uSR{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-lWBmtuhqFPVz6uSR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-lWBmtuhqFPVz6uSR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-lWBmtuhqFPVz6uSR .error-icon{fill:#552222;}#mermaid-svg-lWBmtuhqFPVz6uSR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-lWBmtuhqFPVz6uSR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-lWBmtuhqFPVz6uSR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-lWBmtuhqFPVz6uSR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-lWBmtuhqFPVz6uSR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-lWBmtuhqFPVz6uSR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-lWBmtuhqFPVz6uSR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-lWBmtuhqFPVz6uSR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-lWBmtuhqFPVz6uSR .marker.cross{stroke:#333333;}#mermaid-svg-lWBmtuhqFPVz6uSR svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-lWBmtuhqFPVz6uSR p{margin:0;}#mermaid-svg-lWBmtuhqFPVz6uSR .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-lWBmtuhqFPVz6uSR .cluster-label text{fill:#333;}#mermaid-svg-lWBmtuhqFPVz6uSR .cluster-label span{color:#333;}#mermaid-svg-lWBmtuhqFPVz6uSR .cluster-label span p{background-color:transparent;}#mermaid-svg-lWBmtuhqFPVz6uSR .label text,#mermaid-svg-lWBmtuhqFPVz6uSR span{fill:#333;color:#333;}#mermaid-svg-lWBmtuhqFPVz6uSR .node rect,#mermaid-svg-lWBmtuhqFPVz6uSR .node circle,#mermaid-svg-lWBmtuhqFPVz6uSR .node ellipse,#mermaid-svg-lWBmtuhqFPVz6uSR .node polygon,#mermaid-svg-lWBmtuhqFPVz6uSR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-lWBmtuhqFPVz6uSR .rough-node .label text,#mermaid-svg-lWBmtuhqFPVz6uSR .node .label text,#mermaid-svg-lWBmtuhqFPVz6uSR .image-shape .label,#mermaid-svg-lWBmtuhqFPVz6uSR .icon-shape .label{text-anchor:middle;}#mermaid-svg-lWBmtuhqFPVz6uSR .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-lWBmtuhqFPVz6uSR .rough-node .label,#mermaid-svg-lWBmtuhqFPVz6uSR .node .label,#mermaid-svg-lWBmtuhqFPVz6uSR .image-shape .label,#mermaid-svg-lWBmtuhqFPVz6uSR .icon-shape .label{text-align:center;}#mermaid-svg-lWBmtuhqFPVz6uSR .node.clickable{cursor:pointer;}#mermaid-svg-lWBmtuhqFPVz6uSR .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-lWBmtuhqFPVz6uSR .arrowheadPath{fill:#333333;}#mermaid-svg-lWBmtuhqFPVz6uSR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-lWBmtuhqFPVz6uSR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-lWBmtuhqFPVz6uSR .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-lWBmtuhqFPVz6uSR .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-lWBmtuhqFPVz6uSR .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-lWBmtuhqFPVz6uSR .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-lWBmtuhqFPVz6uSR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-lWBmtuhqFPVz6uSR .cluster text{fill:#333;}#mermaid-svg-lWBmtuhqFPVz6uSR .cluster span{color:#333;}#mermaid-svg-lWBmtuhqFPVz6uSR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-lWBmtuhqFPVz6uSR .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-lWBmtuhqFPVz6uSR rect.text{fill:none;stroke-width:0;}#mermaid-svg-lWBmtuhqFPVz6uSR .icon-shape,#mermaid-svg-lWBmtuhqFPVz6uSR .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-lWBmtuhqFPVz6uSR .icon-shape p,#mermaid-svg-lWBmtuhqFPVz6uSR .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-lWBmtuhqFPVz6uSR .icon-shape .label rect,#mermaid-svg-lWBmtuhqFPVz6uSR .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-lWBmtuhqFPVz6uSR .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-lWBmtuhqFPVz6uSR .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-lWBmtuhqFPVz6uSR :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c4\u6b65&#xff1a;\u53d6\u51fa2&#xff0c;\u63d2\u5165\u5230[1,3,5,8]\u4e2d<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>2 &lt; 8&#xff0c;8\u53f3\u79fb<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>2 &lt; 5&#xff0c;5\u53f3\u79fb<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>2 &lt; 3&#xff0c;3\u53f3\u79fb<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>2 &gt; 1&#xff0c;\u63d2\u5165\u5230\u4f4d\u7f6e1 \u2192 [|1, 2, 3, 5, 8|]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c3\u6b65&#xff1a;\u53d6\u51fa1&#xff0c;\u63d2\u5165\u5230[3,5,8]\u4e2d<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>1 &lt; 8&#xff0c;8\u53f3\u79fb \u2192 [3, 5, _, 8, 2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>1 &lt; 5&#xff0c;5\u53f3\u79fb \u2192 [3, _, 5, 8, 2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>1 &lt; 3&#xff0c;3\u53f3\u79fb \u2192 [_, 3, 5, 8, 2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>1\u653e\u5230\u4f4d\u7f6e0 \u2192 [|1, 3, 5, 8|, 2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c2\u6b65&#xff1a;\u53d6\u51fa8&#xff0c;\u63d2\u5165\u5230[3,5]\u4e2d<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>8 &gt; 5&#xff0c;\u76f4\u63a5\u653e\u672b\u5c3e \u2192 [|3, 5, 8|, 1, 2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c1\u6b65&#xff1a;\u53d6\u51fa3&#xff0c;\u63d2\u5165\u5230[5]\u4e2d<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>3 &lt; 5&#xff0c;5\u53f3\u79fb \u2192 [_, 5, 8, 1, 2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>3\u653e\u5230\u4f4d\u7f6e0 \u2192 [|3, 5|, 8, 1, 2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u521d\u59cb&#xff1a;\u5df2\u6392\u5e8f&#061;[5]&#xff0c;\u5f85\u6392\u5e8f&#061;[3,8,1,2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[|5|, 3, 8, 1, 2]<\/p>\n<p><\/span><\/p>\n<p>\u56fe4-1&#xff1a;\u63d2\u5165\u6392\u5e8f\u6267\u884c\u8fc7\u7a0b\u2014\u2014\u7eff\u8272\u7ad6\u7ebf\u5de6\u4fa7\u4e3a\u5df2\u6392\u5e8f\u90e8\u5206&#xff0c;\u6bcf\u6b65\u53d6\u51fa\u4e00\u4e2a\u5143\u7d20\u4ece\u53f3\u5411\u5de6\u6bd4\u8f83\u5e76\u63d2\u5165<\/p>\n<h4>4.3 \u4ee3\u7801\u5b9e\u73b0<\/h4>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">insertionSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> n<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> key <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u53d6\u51fa\u5f85\u63d2\u5165\u5143\u7d20<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> i <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u4ece\u53f3\u5411\u5de6\u627e\u63d2\u5165\u4f4d\u7f6e&#xff0c;\u5927\u4e8ekey\u7684\u5143\u7d20\u53f3\u79fb<\/span><br \/>\n        <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>j <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">0<\/span> <span class=\"token operator\">&amp;&amp;<\/span> arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5143\u7d20\u53f3\u79fb<\/span><br \/>\n            j<span class=\"token operator\">&#8212;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> key<span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u63d2\u5165\u5230\u6b63\u786e\u4f4d\u7f6e<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u6ce8\u610f while \u6761\u4ef6\u4e2d\u7684 arr[j] &gt; key \u7528\u7684\u662f\u4e25\u683c\u5927\u4e8e\u3002\u5982\u679c\u6539\u6210 &gt;&#061;&#xff0c;\u76f8\u7b49\u7684\u5143\u7d20\u4e5f\u4f1a\u88ab\u53f3\u79fb&#xff0c;\u5bfc\u81f4\u76f8\u7b49\u5143\u7d20\u7684\u76f8\u5bf9\u987a\u5e8f\u88ab\u7834\u574f\u2014\u2014\u8fd9\u5c31\u53d8\u6210\u4e0d\u7a33\u5b9a\u7684\u4e86\u3002\u6240\u4ee5\u8fd9\u91cc\u7528 &gt; \u65e2\u4fdd\u8bc1\u4e86\u7a33\u5b9a\u6027&#xff0c;\u53c8\u907f\u514d\u4e86\u4e0d\u5fc5\u8981\u7684\u79fb\u52a8\u3002<\/p>\n<h4>4.4 \u590d\u6742\u5ea6\u5206\u6790<\/h4>\n<p>\u65f6\u95f4\u590d\u6742\u5ea6&#xff1a;<\/p>\n<table>\n<tr>\u60c5\u51b5\u590d\u6742\u5ea6\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u6700\u597d<\/td>\n<td>O(n)<\/td>\n<td>\u5df2\u6709\u5e8f&#xff0c;\u6bcf\u4e2a\u5143\u7d20\u53ea\u9700\u6bd4\u8f831\u6b21\u5c31\u627e\u5230\u4f4d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td>\u5e73\u5747<\/td>\n<td>O(n\u00b2)<\/td>\n<td>\u5e73\u5747\u6bcf\u4e2a\u5143\u7d20\u9700\u8981\u6bd4\u8f83 i\/2 \u6b21<\/td>\n<\/tr>\n<tr>\n<td>\u6700\u574f<\/td>\n<td>O(n\u00b2)<\/td>\n<td>\u5b8c\u5168\u9006\u5e8f&#xff0c;\u6bcf\u4e2a\u5143\u7d20\u8981\u6bd4\u8f83\u5230\u5e95<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u63d2\u5165\u6392\u5e8f\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u4e0e\u9006\u5e8f\u5bf9\u6570\u91cf\u76f4\u63a5\u76f8\u5173\u3002\u6bcf\u6b21\u5185\u5c42\u5faa\u73af\u7684\u53f3\u79fb\u64cd\u4f5c\u6070\u597d\u6d88\u9664\u4e00\u4e2a\u9006\u5e8f\u5bf9\u3002\u9006\u5e8f\u5bf9\u6570\u91cf\u4e3a m \u65f6&#xff0c;\u65f6\u95f4\u590d\u6742\u5ea6\u4e3a O(n &#043; m)&#xff1a;<\/p>\n<ul>\n<li>\u6709\u5e8f\u6570\u7ec4&#xff1a;m &#061; 0&#xff0c;\u603b\u6bd4\u8f83 n-1 \u6b21&#xff0c;O(n)<\/li>\n<li>\u9006\u5e8f\u6570\u7ec4&#xff1a;m &#061; n(n-1)\/2&#xff0c;O(n\u00b2)<\/li>\n<li>\u968f\u673a\u6570\u7ec4&#xff1a;m \u2248 n(n-1)\/4&#xff0c;O(n\u00b2)<\/li>\n<\/ul>\n<p>\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u63d2\u5165\u6392\u5e8f\u5bf9&#034;\u8fd1\u4e4e\u6709\u5e8f&#034;\u7684\u6570\u636e\u7279\u522b\u5feb\u2014\u2014\u9006\u5e8f\u5bf9\u5c11&#xff0c;\u6bd4\u8f83\u548c\u79fb\u52a8\u6b21\u6570\u5c31\u5c11\u3002<\/p>\n<p>\u7a7a\u95f4\u590d\u6742\u5ea6&#xff1a;O(1)&#xff0c;\u539f\u5730\u6392\u5e8f\u3002<\/p>\n<h4>4.5 \u7a33\u5b9a\u6027\u8bc1\u660e<\/h4>\n<p>\u63d2\u5165\u6392\u5e8f\u662f\u7a33\u5b9a\u7684\u3002<\/p>\n<p>\u8bc1\u660e&#xff1a;\u63d2\u5165\u6392\u5e8f\u4ece\u53f3\u5411\u5de6\u6bd4\u8f83&#xff0c;\u9047\u5230 arr[j] &gt; key \u624d\u53f3\u79fb\u3002\u5bf9\u4e8e\u76f8\u7b49\u7684\u5143\u7d20 arr[j] \u548c key&#xff08;\u5373 arr[j] &#061;&#061; key&#xff09;&#xff0c;\u6761\u4ef6 arr[j] &gt; key \u4e0d\u6210\u7acb&#xff0c;\u4e0d\u4f1a\u53f3\u79fb&#xff0c;key \u88ab\u63d2\u5165\u5230 arr[j] \u7684\u540e\u9762\u3002\u7531\u4e8e key \u539f\u672c\u5c31\u5728 arr[j] \u540e\u9762&#xff08;i &gt; j&#xff09;&#xff0c;\u6240\u4ee5\u76f8\u5bf9\u987a\u5e8f\u4e0d\u53d8\u3002<\/p>\n<h4>4.6 \u4e3a\u4ec0\u4e48\u5c0f\u6570\u7ec4\u7528\u63d2\u5165\u6392\u5e8f<\/h4>\n<p>\u8fd9\u662f\u5de5\u7a0b\u4e2d\u6700\u91cd\u8981\u7684\u4e00\u70b9\u3002Java \u7684 Arrays.sort() \u5bf9\u5143\u7d20\u6570\u5c0f\u4e8e47\u7684\u6570\u7ec4\u4f7f\u7528\u63d2\u5165\u6392\u5e8f&#xff0c;C&#043;&#043; STL \u7684 sort() \u5728\u9012\u5f52\u5230\u5c0f\u533a\u95f4\u65f6\u4e5f\u5207\u6362\u4e3a\u63d2\u5165\u6392\u5e8f\u3002\u4e3a\u4ec0\u4e48&#xff1f;<\/p>\n<p>\u539f\u56e01&#xff1a;\u5e38\u6570\u56e0\u5b50\u5c0f\u3002 \u63d2\u5165\u6392\u5e8f\u7684\u5185\u90e8\u5faa\u73af\u975e\u5e38\u7b80\u5355\u2014\u2014\u4e00\u6b21\u6bd4\u8f83\u3001\u4e00\u6b21\u8d4b\u503c\u3001\u4e00\u6b21\u81ea\u51cf\u3002\u6ca1\u6709\u51fd\u6570\u8c03\u7528\u5f00\u9500&#xff0c;\u6ca1\u6709\u9012\u5f52\u5f00\u9500\u3002\u5bf9\u4e8e\u5c0f\u6570\u7ec4&#xff0c;O(n\u00b2) \u7684\u5e38\u6570\u56e0\u5b50\u6bd4 O(n log n) \u7b97\u6cd5\u7684\u5e38\u6570\u56e0\u5b50\u5c0f\u5f97\u591a\u3002<\/p>\n<p>\u539f\u56e02&#xff1a;\u7f13\u5b58\u53cb\u597d\u3002 \u63d2\u5165\u6392\u5e8f\u53ea\u8bbf\u95ee\u76f8\u90bb\u4f4d\u7f6e\u7684\u6570\u636e&#xff0c;\u5145\u5206\u5229\u7528 CPU \u7f13\u5b58\u7684\u5c40\u90e8\u6027\u3002\u5feb\u6392\u548c\u5f52\u5e76\u6392\u5e8f\u7684\u8df3\u8dc3\u5f0f\u8bbf\u95ee\u6a21\u5f0f\u5bfc\u81f4\u66f4\u591a\u7f13\u5b58\u672a\u547d\u4e2d\u3002<\/p>\n<p>\u539f\u56e03&#xff1a;\u81ea\u9002\u5e94\u3002 \u5982\u679c\u5c0f\u6570\u7ec4\u6070\u597d\u90e8\u5206\u6709\u5e8f&#xff08;\u8fd9\u5728\u5feb\u6392\u9012\u5f52\u5206\u533a\u540e\u5f88\u5e38\u89c1&#xff09;&#xff0c;\u63d2\u5165\u6392\u5e8f\u4f1a\u66f4\u5feb\u3002<\/p>\n<p>  #mermaid-svg-pvRKI6EYTeCuI32d{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-pvRKI6EYTeCuI32d .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-pvRKI6EYTeCuI32d .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-pvRKI6EYTeCuI32d .error-icon{fill:#552222;}#mermaid-svg-pvRKI6EYTeCuI32d .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-pvRKI6EYTeCuI32d .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-pvRKI6EYTeCuI32d .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-pvRKI6EYTeCuI32d .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-pvRKI6EYTeCuI32d .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-pvRKI6EYTeCuI32d .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-pvRKI6EYTeCuI32d .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-pvRKI6EYTeCuI32d .marker{fill:#333333;stroke:#333333;}#mermaid-svg-pvRKI6EYTeCuI32d .marker.cross{stroke:#333333;}#mermaid-svg-pvRKI6EYTeCuI32d svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-pvRKI6EYTeCuI32d p{margin:0;}#mermaid-svg-pvRKI6EYTeCuI32d .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-pvRKI6EYTeCuI32d .cluster-label text{fill:#333;}#mermaid-svg-pvRKI6EYTeCuI32d .cluster-label span{color:#333;}#mermaid-svg-pvRKI6EYTeCuI32d .cluster-label span p{background-color:transparent;}#mermaid-svg-pvRKI6EYTeCuI32d .label text,#mermaid-svg-pvRKI6EYTeCuI32d span{fill:#333;color:#333;}#mermaid-svg-pvRKI6EYTeCuI32d .node rect,#mermaid-svg-pvRKI6EYTeCuI32d .node circle,#mermaid-svg-pvRKI6EYTeCuI32d .node ellipse,#mermaid-svg-pvRKI6EYTeCuI32d .node polygon,#mermaid-svg-pvRKI6EYTeCuI32d .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-pvRKI6EYTeCuI32d .rough-node .label text,#mermaid-svg-pvRKI6EYTeCuI32d .node .label text,#mermaid-svg-pvRKI6EYTeCuI32d .image-shape .label,#mermaid-svg-pvRKI6EYTeCuI32d .icon-shape .label{text-anchor:middle;}#mermaid-svg-pvRKI6EYTeCuI32d .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-pvRKI6EYTeCuI32d .rough-node .label,#mermaid-svg-pvRKI6EYTeCuI32d .node .label,#mermaid-svg-pvRKI6EYTeCuI32d .image-shape .label,#mermaid-svg-pvRKI6EYTeCuI32d .icon-shape .label{text-align:center;}#mermaid-svg-pvRKI6EYTeCuI32d .node.clickable{cursor:pointer;}#mermaid-svg-pvRKI6EYTeCuI32d .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-pvRKI6EYTeCuI32d .arrowheadPath{fill:#333333;}#mermaid-svg-pvRKI6EYTeCuI32d .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-pvRKI6EYTeCuI32d .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-pvRKI6EYTeCuI32d .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pvRKI6EYTeCuI32d .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-pvRKI6EYTeCuI32d .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pvRKI6EYTeCuI32d .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-pvRKI6EYTeCuI32d .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-pvRKI6EYTeCuI32d .cluster text{fill:#333;}#mermaid-svg-pvRKI6EYTeCuI32d .cluster span{color:#333;}#mermaid-svg-pvRKI6EYTeCuI32d div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-pvRKI6EYTeCuI32d .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-pvRKI6EYTeCuI32d rect.text{fill:none;stroke-width:0;}#mermaid-svg-pvRKI6EYTeCuI32d .icon-shape,#mermaid-svg-pvRKI6EYTeCuI32d .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pvRKI6EYTeCuI32d .icon-shape p,#mermaid-svg-pvRKI6EYTeCuI32d .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-pvRKI6EYTeCuI32d .icon-shape .label rect,#mermaid-svg-pvRKI6EYTeCuI32d .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pvRKI6EYTeCuI32d .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-pvRKI6EYTeCuI32d .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-pvRKI6EYTeCuI32d :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6df7\u5408\u6392\u5e8f\u7b56\u7565&#xff08;Java Arrays.sort\u539f\u7406&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u5426<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u5426<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8f93\u5165\u6570\u7ec4 n<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>n \u2265 47?<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>Dual-Pivot\u5feb\u6392<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5b50\u6570\u7ec4 &lt; 47?<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5207\u6362\u4e3a\u63d2\u5165\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6392\u5e8f\u5b8c\u6210<\/p>\n<p><\/span><\/p>\n<p>\u56fe4-2&#xff1a;Java Arrays.sort \u7684\u6df7\u5408\u7b56\u7565\u2014\u2014\u5927\u6570\u7ec4\u7528\u5feb\u6392\u5206\u533a&#xff0c;\u5c0f\u533a\u95f4\u5207\u6362\u4e3a\u63d2\u5165\u6392\u5e8f<\/p>\n<h4>4.7 \u4e8c\u5206\u63d2\u5165\u6392\u5e8f<\/h4>\n<p>\u63d2\u5165\u6392\u5e8f\u7684\u4e00\u4e2a\u53d8\u4f53&#xff1a;\u7528\u4e8c\u5206\u67e5\u627e\u6765\u627e\u63d2\u5165\u4f4d\u7f6e&#xff0c;\u51cf\u5c11\u6bd4\u8f83\u6b21\u6570\u3002\u4f46\u5143\u7d20\u79fb\u52a8\u6b21\u6570\u4e0d\u53d8&#xff08;\u8fd8\u662f\u8981\u53f3\u79fb\u817e\u51fa\u7a7a\u95f4&#xff09;&#xff0c;\u6240\u4ee5\u65f6\u95f4\u590d\u6742\u5ea6\u4ecd\u7136\u662f O(n\u00b2)&#xff0c;\u53ea\u662f\u6bd4\u8f83\u6b21\u6570\u4ece O(n\u00b2) \u964d\u5230 O(n log n)\u3002<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">binaryInsertionSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> n<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> key <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u4e8c\u5206\u67e5\u627e\u63d2\u5165\u4f4d\u7f6e<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> lo <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> hi <span class=\"token operator\">&#061;<\/span> i<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>lo <span class=\"token operator\">&lt;<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">int<\/span> mid <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>lo <span class=\"token operator\">&#043;<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&gt;&gt;&gt;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>mid<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;&#061;<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>  <span class=\"token comment\">\/\/ \u6ce8\u610f\u7528 &lt;&#061;&#xff0c;\u627e\u7b2c\u4e00\u4e2a&gt;key\u7684\u4f4d\u7f6e<\/span><br \/>\n                lo <span class=\"token operator\">&#061;<\/span> mid <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                hi <span class=\"token operator\">&#061;<\/span> mid<span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u5c06 [lo, i-1] \u7684\u5143\u7d20\u53f3\u79fb<\/span><br \/>\n        <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">arraycopy<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> arr<span class=\"token punctuation\">,<\/span> lo <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> i <span class=\"token operator\">&#8211;<\/span> lo<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        arr<span class=\"token punctuation\">[<\/span>lo<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> key<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u4e8c\u5206\u63d2\u5165\u6392\u5e8f\u5728\u4ee5\u4e0b\u573a\u666f\u6709\u4f18\u52bf&#xff1a;\u6bd4\u8f83\u64cd\u4f5c\u5f88\u6602\u8d35&#xff08;\u5982\u5b57\u7b26\u4e32\u6bd4\u8f83&#xff09;\u3002\u56e0\u4e3a\u4e8c\u5206\u67e5\u627e\u628a\u6bd4\u8f83\u6b21\u6570\u4ece O(n) \u964d\u5230\u4e86 O(log n)\u3002\u4f46\u5bf9\u4e8e\u6574\u6570\u6392\u5e8f&#xff0c;\u6bd4\u8f83\u5f88\u5feb&#xff0c;\u79fb\u52a8\u624d\u662f\u74f6\u9888&#xff0c;\u4e8c\u5206\u63d2\u5165\u6392\u5e8f\u7684\u63d0\u5347\u4e0d\u660e\u663e\u3002<\/p>\n<p>\u6ce8\u610f\u4e8c\u5206\u67e5\u627e\u4e2d\u7528\u7684\u662f arr[mid] &lt;&#061; key&#xff08;\u5e26\u7b49\u53f7&#xff09;&#xff0c;\u8fd9\u4fdd\u8bc1\u4e86\u76f8\u7b49\u5143\u7d20\u7684\u7a33\u5b9a\u6027\u2014\u2014\u627e\u5230\u7684\u662f\u7b2c\u4e00\u4e2a\u5927\u4e8e key \u7684\u4f4d\u7f6e&#xff0c;key \u88ab\u63d2\u5165\u5230\u76f8\u7b49\u5143\u7d20\u7684\u540e\u9762\u3002<\/p>\n<h4>4.8 \u5e0c\u5c14\u6392\u5e8f&#xff1a;\u63d2\u5165\u6392\u5e8f\u7684\u8fdb\u9636<\/h4>\n<p>\u5e0c\u5c14\u6392\u5e8f&#xff08;Shell Sort&#xff09;\u662f\u63d2\u5165\u6392\u5e8f\u7684\u6539\u8fdb\u7248&#xff0c;\u7531 Donald Shell \u4e8e1959\u5e74\u63d0\u51fa\u3002\u6838\u5fc3\u601d\u60f3\u662f\u5148\u505a\u8fdc\u8ddd\u79bb\u4ea4\u6362\u6d88\u9664\u5927\u91cf\u9006\u5e8f\u5bf9&#xff0c;\u518d\u9010\u6e10\u7f29\u5c0f\u95f4\u9694\u505a\u7cbe\u7ec6\u6392\u5e8f\u3002<\/p>\n<p>  #mermaid-svg-RtBUZtfgt4hNmaiU{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-RtBUZtfgt4hNmaiU .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-RtBUZtfgt4hNmaiU .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-RtBUZtfgt4hNmaiU .error-icon{fill:#552222;}#mermaid-svg-RtBUZtfgt4hNmaiU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-RtBUZtfgt4hNmaiU .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-RtBUZtfgt4hNmaiU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-RtBUZtfgt4hNmaiU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-RtBUZtfgt4hNmaiU .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-RtBUZtfgt4hNmaiU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-RtBUZtfgt4hNmaiU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-RtBUZtfgt4hNmaiU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-RtBUZtfgt4hNmaiU .marker.cross{stroke:#333333;}#mermaid-svg-RtBUZtfgt4hNmaiU svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-RtBUZtfgt4hNmaiU p{margin:0;}#mermaid-svg-RtBUZtfgt4hNmaiU .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-RtBUZtfgt4hNmaiU .cluster-label text{fill:#333;}#mermaid-svg-RtBUZtfgt4hNmaiU .cluster-label span{color:#333;}#mermaid-svg-RtBUZtfgt4hNmaiU .cluster-label span p{background-color:transparent;}#mermaid-svg-RtBUZtfgt4hNmaiU .label text,#mermaid-svg-RtBUZtfgt4hNmaiU span{fill:#333;color:#333;}#mermaid-svg-RtBUZtfgt4hNmaiU .node rect,#mermaid-svg-RtBUZtfgt4hNmaiU .node circle,#mermaid-svg-RtBUZtfgt4hNmaiU .node ellipse,#mermaid-svg-RtBUZtfgt4hNmaiU .node polygon,#mermaid-svg-RtBUZtfgt4hNmaiU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-RtBUZtfgt4hNmaiU .rough-node .label text,#mermaid-svg-RtBUZtfgt4hNmaiU .node .label text,#mermaid-svg-RtBUZtfgt4hNmaiU .image-shape .label,#mermaid-svg-RtBUZtfgt4hNmaiU .icon-shape .label{text-anchor:middle;}#mermaid-svg-RtBUZtfgt4hNmaiU .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-RtBUZtfgt4hNmaiU .rough-node .label,#mermaid-svg-RtBUZtfgt4hNmaiU .node .label,#mermaid-svg-RtBUZtfgt4hNmaiU .image-shape .label,#mermaid-svg-RtBUZtfgt4hNmaiU .icon-shape .label{text-align:center;}#mermaid-svg-RtBUZtfgt4hNmaiU .node.clickable{cursor:pointer;}#mermaid-svg-RtBUZtfgt4hNmaiU .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-RtBUZtfgt4hNmaiU .arrowheadPath{fill:#333333;}#mermaid-svg-RtBUZtfgt4hNmaiU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-RtBUZtfgt4hNmaiU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-RtBUZtfgt4hNmaiU .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-RtBUZtfgt4hNmaiU .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-RtBUZtfgt4hNmaiU .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-RtBUZtfgt4hNmaiU .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-RtBUZtfgt4hNmaiU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-RtBUZtfgt4hNmaiU .cluster text{fill:#333;}#mermaid-svg-RtBUZtfgt4hNmaiU .cluster span{color:#333;}#mermaid-svg-RtBUZtfgt4hNmaiU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-RtBUZtfgt4hNmaiU .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-RtBUZtfgt4hNmaiU rect.text{fill:none;stroke-width:0;}#mermaid-svg-RtBUZtfgt4hNmaiU .icon-shape,#mermaid-svg-RtBUZtfgt4hNmaiU .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-RtBUZtfgt4hNmaiU .icon-shape p,#mermaid-svg-RtBUZtfgt4hNmaiU .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-RtBUZtfgt4hNmaiU .icon-shape .label rect,#mermaid-svg-RtBUZtfgt4hNmaiU .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-RtBUZtfgt4hNmaiU .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-RtBUZtfgt4hNmaiU .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-RtBUZtfgt4hNmaiU :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5e0c\u5c14\u6392\u5e8f gap&#061;3 \u2192 gap&#061;1<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>gap&#061;3: [5,3,8,1,2,7,4,6]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5206\u7ec4: [5,1,4] [3,2,6] [8,7]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5404\u7ec4\u63d2\u5165\u6392\u5e8f: [1,2,7,4,3,6,5,8]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>gap&#061;1: \u6807\u51c6\u63d2\u5165\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[1,2,3,4,5,6,7,8]<\/p>\n<p><\/span><\/p>\n<p>\u56fe4-3&#xff1a;\u5e0c\u5c14\u6392\u5e8f\u2014\u2014\u5148\u4ee5gap&#061;3\u5206\u7ec4\u6392\u5e8f\u6d88\u9664\u8fdc\u8ddd\u79bb\u9006\u5e8f\u5bf9&#xff0c;\u518d\u4ee5gap&#061;1\u505a\u7cbe\u7ec6\u63d2\u5165\u6392\u5e8f<\/p>\n<p>\u5e0c\u5c14\u6392\u5e8f\u7684\u5173\u952e\u5728\u4e8e**\u95f4\u9694\u5e8f\u5217&#xff08;gap sequence&#xff09;**\u7684\u9009\u62e9&#xff1a;<\/p>\n<table>\n<tr>\u95f4\u9694\u5e8f\u5217\u6700\u574f\u65f6\u95f4\u590d\u6742\u5ea6\u63d0\u51fa\u8005<\/tr>\n<tbody>\n<tr>\n<td>n\/2, n\/4, \u2026, 1<\/td>\n<td>O(n\u00b2)<\/td>\n<td>Shell (1959)<\/td>\n<\/tr>\n<tr>\n<td>4^k &#043; 3\u00b72^(k-1) &#043; 1<\/td>\n<td>O(n^(3\/2))<\/td>\n<td>Knuth (1973)<\/td>\n<\/tr>\n<tr>\n<td>9\u00b74^k &#8211; 9\u00b72^k &#043; 1<\/td>\n<td>O(n^(4\/3))<\/td>\n<td>Sedgewick (1986)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5e0c\u5c14\u6392\u5e8f\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u4f9d\u8d56\u4e8e\u95f4\u9694\u5e8f\u5217&#xff0c;\u81f3\u4eca\u6ca1\u6709\u7cbe\u786e\u7684\u5e73\u5747\u590d\u6742\u5ea6\u5206\u6790\u3002\u5b83\u662f\u4e0d\u7a33\u5b9a\u7684&#xff08;\u8fdc\u8ddd\u79bb\u4ea4\u6362\u53ef\u80fd\u8de8\u8fc7\u76f8\u7b49\u5143\u7d20&#xff09;&#xff0c;\u4f46\u5728\u4e2d\u7b49\u89c4\u6a21\u6570\u636e&#xff08;n &lt; 5000&#xff09;\u4e0a\u6027\u80fd\u4f18\u4e8e O(n\u00b2) \u7b97\u6cd5&#xff0c;\u4e14\u4ee3\u7801\u7b80\u5355\u3001\u539f\u5730\u6392\u5e8f\u3002<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">shellSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ Knuth\u95f4\u9694\u5e8f\u5217: 1, 4, 13, 40, 121, &#8230;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> gap <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>gap <span class=\"token operator\">&lt;<\/span> n <span class=\"token operator\">\/<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span> gap <span class=\"token operator\">&#061;<\/span> gap <span class=\"token operator\">*<\/span> <span class=\"token number\">3<\/span> <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>gap <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u5bf9\u6bcf\u4e2agap\u505a\u63d2\u5165\u6392\u5e8f<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> gap<span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> n<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">int<\/span> key <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> i <span class=\"token operator\">&#8211;<\/span> gap<span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>j <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">0<\/span> <span class=\"token operator\">&amp;&amp;<\/span> arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> gap<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n                j <span class=\"token operator\">-&#061;<\/span> gap<span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n            arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> gap<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> key<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        gap <span class=\"token operator\">\/&#061;<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u7f29\u5c0f\u95f4\u9694<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u7406\u89e3\u5e0c\u5c14\u6392\u5e8f\u4e3a\u4ec0\u4e48\u6709\u6548&#xff1a;\u7b2c\u4e00\u6b65\u5927\u95f4\u9694\u6392\u5e8f\u628a\u5c0f\u5143\u7d20\u4ece\u6570\u7ec4\u672b\u5c3e\u5feb\u901f\u642c\u5230\u524d\u9762&#xff08;\u666e\u901a\u63d2\u5165\u6392\u5e8f\u9700\u8981\u4e00\u4e2a\u4e00\u4e2a\u79fb\u52a8&#xff09;&#xff0c;\u6d88\u9664\u4e86\u5927\u91cf\u9006\u5e8f\u5bf9\u3002\u5230\u6700\u540e gap&#061;1 \u65f6&#xff0c;\u6570\u7ec4\u5df2\u7ecf&#034;\u51e0\u4e4e\u6709\u5e8f&#034;&#xff0c;\u63d2\u5165\u6392\u5e8f\u5728\u8fd1\u4e4e\u6709\u5e8f\u7684\u6570\u636e\u4e0a\u662f O(n) \u7684&#xff0c;\u6240\u4ee5\u6700\u540e\u4e00\u6b65\u975e\u5e38\u5feb\u3002<\/p>\n<hr \/>\n<h3>\u7b2c5\u7ae0 \u5f52\u5e76\u6392\u5e8f&#xff1a;\u5206\u6cbb\u7684\u4f18\u96c5<\/h3>\n<h4>5.1 \u6838\u5fc3\u601d\u60f3<\/h4>\n<p>\u5f52\u5e76\u6392\u5e8f\u662f\u5206\u6cbb\u601d\u60f3&#xff08;Divide and Conquer&#xff09;\u7684\u6559\u79d1\u4e66\u7ea7\u5e94\u7528&#xff1a;\u628a\u6570\u7ec4\u5bf9\u534a\u5206 \u2192 \u5206\u522b\u6392\u5e8f \u2192 \u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u6570\u7ec4\u3002<\/p>\n<p>\u8fd9\u4e2a\u601d\u8def\u4e4b\u6240\u4ee5\u4f18\u96c5&#xff0c;\u5728\u4e8e\u5b83\u628a\u4e00\u4e2aO(n\u00b2)\u7684\u95ee\u9898\u5206\u89e3\u6210\u4e86\u4e24\u4e2aO(n\u00b2\/4)\u7684\u5b50\u95ee\u9898\u52a0\u4e0a\u4e00\u4e2aO(n)\u7684\u5408\u5e76&#xff0c;\u9012\u5f52\u4e0b\u6765\u5c31\u662fO(n log n)\u3002\u5173\u952e\u6d1e\u5bdf\u662f&#xff1a;\u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u6570\u7ec4\u7684\u4ee3\u4ef7\u662f O(n)&#xff0c;\u8fdc\u4f4e\u4e8e\u4ece\u5934\u6392\u5e8f\u4e00\u4e2a\u65e0\u5e8f\u6570\u7ec4\u3002<\/p>\n<p>  #mermaid-svg-t2bTDNunrPRcGuFc{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-t2bTDNunrPRcGuFc .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-t2bTDNunrPRcGuFc .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-t2bTDNunrPRcGuFc .error-icon{fill:#552222;}#mermaid-svg-t2bTDNunrPRcGuFc .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-t2bTDNunrPRcGuFc .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-t2bTDNunrPRcGuFc .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-t2bTDNunrPRcGuFc .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-t2bTDNunrPRcGuFc .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-t2bTDNunrPRcGuFc .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-t2bTDNunrPRcGuFc .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-t2bTDNunrPRcGuFc .marker{fill:#333333;stroke:#333333;}#mermaid-svg-t2bTDNunrPRcGuFc .marker.cross{stroke:#333333;}#mermaid-svg-t2bTDNunrPRcGuFc svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-t2bTDNunrPRcGuFc p{margin:0;}#mermaid-svg-t2bTDNunrPRcGuFc .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-t2bTDNunrPRcGuFc .cluster-label text{fill:#333;}#mermaid-svg-t2bTDNunrPRcGuFc .cluster-label span{color:#333;}#mermaid-svg-t2bTDNunrPRcGuFc .cluster-label span p{background-color:transparent;}#mermaid-svg-t2bTDNunrPRcGuFc .label text,#mermaid-svg-t2bTDNunrPRcGuFc span{fill:#333;color:#333;}#mermaid-svg-t2bTDNunrPRcGuFc .node rect,#mermaid-svg-t2bTDNunrPRcGuFc .node circle,#mermaid-svg-t2bTDNunrPRcGuFc .node ellipse,#mermaid-svg-t2bTDNunrPRcGuFc .node polygon,#mermaid-svg-t2bTDNunrPRcGuFc .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-t2bTDNunrPRcGuFc .rough-node .label text,#mermaid-svg-t2bTDNunrPRcGuFc .node .label text,#mermaid-svg-t2bTDNunrPRcGuFc .image-shape .label,#mermaid-svg-t2bTDNunrPRcGuFc .icon-shape .label{text-anchor:middle;}#mermaid-svg-t2bTDNunrPRcGuFc .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-t2bTDNunrPRcGuFc .rough-node .label,#mermaid-svg-t2bTDNunrPRcGuFc .node .label,#mermaid-svg-t2bTDNunrPRcGuFc .image-shape .label,#mermaid-svg-t2bTDNunrPRcGuFc .icon-shape .label{text-align:center;}#mermaid-svg-t2bTDNunrPRcGuFc .node.clickable{cursor:pointer;}#mermaid-svg-t2bTDNunrPRcGuFc .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-t2bTDNunrPRcGuFc .arrowheadPath{fill:#333333;}#mermaid-svg-t2bTDNunrPRcGuFc .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-t2bTDNunrPRcGuFc .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-t2bTDNunrPRcGuFc .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-t2bTDNunrPRcGuFc .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-t2bTDNunrPRcGuFc .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-t2bTDNunrPRcGuFc .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-t2bTDNunrPRcGuFc .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-t2bTDNunrPRcGuFc .cluster text{fill:#333;}#mermaid-svg-t2bTDNunrPRcGuFc .cluster span{color:#333;}#mermaid-svg-t2bTDNunrPRcGuFc div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-t2bTDNunrPRcGuFc .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-t2bTDNunrPRcGuFc rect.text{fill:none;stroke-width:0;}#mermaid-svg-t2bTDNunrPRcGuFc .icon-shape,#mermaid-svg-t2bTDNunrPRcGuFc .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-t2bTDNunrPRcGuFc .icon-shape p,#mermaid-svg-t2bTDNunrPRcGuFc .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-t2bTDNunrPRcGuFc .icon-shape .label rect,#mermaid-svg-t2bTDNunrPRcGuFc .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-t2bTDNunrPRcGuFc .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-t2bTDNunrPRcGuFc .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-t2bTDNunrPRcGuFc :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5f52\u5e76\u6392\u5e8f\u5206\u6cbb\u8fc7\u7a0b [8,3,5,1,7,2,6,4]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[8,3,5,1,7,2,6,4]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[8,3,5,1]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[7,2,6,4]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[8,3]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[5,1]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[7,2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[6,4]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[3,8]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[1,5]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[2,7]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[4,6]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[1,3,5,8]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[2,4,6,7]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[1,2,3,4,5,6,7,8]<\/p>\n<p><\/span><\/p>\n<p>\u56fe5-1&#xff1a;\u5f52\u5e76\u6392\u5e8f\u5206\u6cbb\u6811\u2014\u2014\u81ea\u9876\u5411\u4e0b\u5bf9\u534a\u5206\u5230\u5355\u4e2a\u5143\u7d20&#xff0c;\u518d\u81ea\u5e95\u5411\u4e0a\u4e24\u4e24\u5408\u5e76<\/p>\n<h4>5.2 \u5408\u5e76\u8fc7\u7a0b\u8be6\u89e3<\/h4>\n<p>\u5f52\u5e76\u6392\u5e8f\u7684\u6838\u5fc3\u662f\u5408\u5e76&#xff08;merge&#xff09;\u64cd\u4f5c\u3002\u6765\u770b\u4e24\u4e2a\u6709\u5e8f\u6570\u7ec4\u7684\u5408\u5e76\u8fc7\u7a0b&#xff1a;<\/p>\n<p>  #mermaid-svg-VQuWRhoKKtrvHRPZ{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-VQuWRhoKKtrvHRPZ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-VQuWRhoKKtrvHRPZ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-VQuWRhoKKtrvHRPZ .error-icon{fill:#552222;}#mermaid-svg-VQuWRhoKKtrvHRPZ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-VQuWRhoKKtrvHRPZ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-VQuWRhoKKtrvHRPZ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-VQuWRhoKKtrvHRPZ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-VQuWRhoKKtrvHRPZ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-VQuWRhoKKtrvHRPZ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-VQuWRhoKKtrvHRPZ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-VQuWRhoKKtrvHRPZ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-VQuWRhoKKtrvHRPZ .marker.cross{stroke:#333333;}#mermaid-svg-VQuWRhoKKtrvHRPZ svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-VQuWRhoKKtrvHRPZ p{margin:0;}#mermaid-svg-VQuWRhoKKtrvHRPZ .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-VQuWRhoKKtrvHRPZ .cluster-label text{fill:#333;}#mermaid-svg-VQuWRhoKKtrvHRPZ .cluster-label span{color:#333;}#mermaid-svg-VQuWRhoKKtrvHRPZ .cluster-label span p{background-color:transparent;}#mermaid-svg-VQuWRhoKKtrvHRPZ .label text,#mermaid-svg-VQuWRhoKKtrvHRPZ span{fill:#333;color:#333;}#mermaid-svg-VQuWRhoKKtrvHRPZ .node rect,#mermaid-svg-VQuWRhoKKtrvHRPZ .node circle,#mermaid-svg-VQuWRhoKKtrvHRPZ .node ellipse,#mermaid-svg-VQuWRhoKKtrvHRPZ .node polygon,#mermaid-svg-VQuWRhoKKtrvHRPZ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-VQuWRhoKKtrvHRPZ .rough-node .label text,#mermaid-svg-VQuWRhoKKtrvHRPZ .node .label text,#mermaid-svg-VQuWRhoKKtrvHRPZ .image-shape .label,#mermaid-svg-VQuWRhoKKtrvHRPZ .icon-shape .label{text-anchor:middle;}#mermaid-svg-VQuWRhoKKtrvHRPZ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-VQuWRhoKKtrvHRPZ .rough-node .label,#mermaid-svg-VQuWRhoKKtrvHRPZ .node .label,#mermaid-svg-VQuWRhoKKtrvHRPZ .image-shape .label,#mermaid-svg-VQuWRhoKKtrvHRPZ .icon-shape .label{text-align:center;}#mermaid-svg-VQuWRhoKKtrvHRPZ .node.clickable{cursor:pointer;}#mermaid-svg-VQuWRhoKKtrvHRPZ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-VQuWRhoKKtrvHRPZ .arrowheadPath{fill:#333333;}#mermaid-svg-VQuWRhoKKtrvHRPZ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-VQuWRhoKKtrvHRPZ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-VQuWRhoKKtrvHRPZ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-VQuWRhoKKtrvHRPZ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-VQuWRhoKKtrvHRPZ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-VQuWRhoKKtrvHRPZ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-VQuWRhoKKtrvHRPZ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-VQuWRhoKKtrvHRPZ .cluster text{fill:#333;}#mermaid-svg-VQuWRhoKKtrvHRPZ .cluster span{color:#333;}#mermaid-svg-VQuWRhoKKtrvHRPZ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-VQuWRhoKKtrvHRPZ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-VQuWRhoKKtrvHRPZ rect.text{fill:none;stroke-width:0;}#mermaid-svg-VQuWRhoKKtrvHRPZ .icon-shape,#mermaid-svg-VQuWRhoKKtrvHRPZ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-VQuWRhoKKtrvHRPZ .icon-shape p,#mermaid-svg-VQuWRhoKKtrvHRPZ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-VQuWRhoKKtrvHRPZ .icon-shape .label rect,#mermaid-svg-VQuWRhoKKtrvHRPZ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-VQuWRhoKKtrvHRPZ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-VQuWRhoKKtrvHRPZ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-VQuWRhoKKtrvHRPZ :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>merge([1,3,5,8], [2,4,6,7])<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5de6&#061;[1,3,5,8] \u53f3&#061;[2,4,6,7] \u7ed3\u679c&#061;[]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>1\u22642 \u2192 \u53d61 \u2192 \u7ed3\u679c&#061;[1]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>3&gt;2 \u2192 \u53d62 \u2192 \u7ed3\u679c&#061;[1,2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>3\u22644 \u2192 \u53d63 \u2192 \u7ed3\u679c&#061;[1,2,3]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>5&gt;4 \u2192 \u53d64 \u2192 \u7ed3\u679c&#061;[1,2,3,4]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>5\u22646 \u2192 \u53d65 \u2192 \u7ed3\u679c&#061;[1,2,3,4,5]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>8&gt;6 \u2192 \u53d66 \u2192 \u7ed3\u679c&#061;[1,2,3,4,5,6]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>8&gt;7 \u2192 \u53d67 \u2192 \u7ed3\u679c&#061;[1,2,3,4,5,6,7]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5de6\u5269\u4f59[8] \u2192 \u8ffd\u52a0 \u2192 [1,2,3,4,5,6,7,8]<\/p>\n<p><\/span><\/p>\n<p>\u56fe5-2&#xff1a;merge\u64cd\u4f5c\u2014\u2014\u53cc\u6307\u9488\u6bd4\u8f83\u5934\u90e8\u5143\u7d20&#xff0c;\u53d6\u8f83\u5c0f\u8005\u653e\u5165\u7ed3\u679c&#xff0c;\u76f4\u5230\u4e00\u65b9\u7528\u5b8c\u518d\u8ffd\u52a0\u53e6\u4e00\u65b9\u5269\u4f59<\/p>\n<p>\u5408\u5e76\u7684\u5173\u952e\u6027\u8d28&#xff1a;\u6bcf\u6b21\u6bd4\u8f83\u53ea\u53d6\u8d70\u4e00\u4e2a\u5143\u7d20&#xff0c;n\u4e2a\u5143\u7d20\u603b\u5171\u6bd4\u8f83n-1\u6b21&#xff08;\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4e0d\u9700\u8981\u6bd4\u8f83&#xff0c;\u76f4\u63a5\u8ffd\u52a0&#xff09;&#xff0c;\u6240\u4ee5merge\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u662f O(n)\u3002<\/p>\n<h4>5.3 \u4ee3\u7801\u5b9e\u73b0<\/h4>\n<h5>5.3.1 \u9012\u5f52\u7248&#xff08;\u81ea\u9876\u5411\u4e0b&#xff09;<\/h5>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">mergeSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&lt;&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> temp <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span>arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u9884\u5206\u914d\u8f85\u52a9\u6570\u7ec4&#xff0c;\u907f\u514d\u91cd\u590d\u521b\u5efa<\/span><br \/>\n    <span class=\"token function\">mergeSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> arr<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">mergeSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> left<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> right<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> temp<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>left <span class=\"token operator\">&gt;&#061;<\/span> right<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> mid <span class=\"token operator\">&#061;<\/span> left <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>right <span class=\"token operator\">&#8211;<\/span> left<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u9632\u6ea2\u51fa\u7684\u4e2d\u70b9\u8ba1\u7b97<\/span><br \/>\n    <span class=\"token function\">mergeSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> left<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>       <span class=\"token comment\">\/\/ \u6392\u5de6\u534a<\/span><br \/>\n    <span class=\"token function\">mergeSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> mid <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> right<span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u6392\u53f3\u534a<\/span><br \/>\n    <span class=\"token function\">merge<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> left<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">,<\/span> right<span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>    <span class=\"token comment\">\/\/ \u5408\u5e76\u4e24\u534a<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">merge<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> left<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> mid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> right<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> temp<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u628aarr[left..right]\u590d\u5236\u5230temp<\/span><br \/>\n    <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">arraycopy<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> left<span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">,<\/span> left<span class=\"token punctuation\">,<\/span> right <span class=\"token operator\">&#8211;<\/span> left <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> left<span class=\"token punctuation\">;<\/span>       <span class=\"token comment\">\/\/ \u5de6\u534a\u8d77\u70b9<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> mid <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>    <span class=\"token comment\">\/\/ \u53f3\u534a\u8d77\u70b9<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> k <span class=\"token operator\">&#061;<\/span> left<span class=\"token punctuation\">;<\/span>       <span class=\"token comment\">\/\/ \u5199\u56dearr\u7684\u4f4d\u7f6e<\/span><\/p>\n<p>    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&lt;&#061;<\/span> mid <span class=\"token operator\">&amp;&amp;<\/span> j <span class=\"token operator\">&lt;&#061;<\/span> right<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>temp<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;&#061;<\/span> temp<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>  <span class=\"token comment\">\/\/ \u6ce8\u610f &lt;&#061;&#xff0c;\u4fdd\u8bc1\u7a33\u5b9a\u6027<\/span><br \/>\n            arr<span class=\"token punctuation\">[<\/span>k<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">[<\/span>i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            arr<span class=\"token punctuation\">[<\/span>k<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">[<\/span>j<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5904\u7406\u5269\u4f59\u5143\u7d20&#xff08;\u6700\u591a\u4e00\u65b9\u6709\u5269\u4f59&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&lt;&#061;<\/span> mid<span class=\"token punctuation\">)<\/span> arr<span class=\"token punctuation\">[<\/span>k<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">[<\/span>i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>j <span class=\"token operator\">&lt;&#061;<\/span> right<span class=\"token punctuation\">)<\/span> arr<span class=\"token punctuation\">[<\/span>k<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">[<\/span>j<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u4e3a\u4ec0\u4e48\u9884\u5206\u914dtemp\u6570\u7ec4&#xff1a;\u5982\u679c\u6bcf\u6b21merge\u90fd\u521b\u5efa\u65b0\u6570\u7ec4&#xff0c;\u4f1a\u89e6\u53d1\u9891\u7e41GC&#xff0c;\u4e25\u91cd\u5f71\u54cd\u6027\u80fd\u3002\u9884\u5206\u914d\u4e00\u4e2a\u4e0e\u539f\u6570\u7ec4\u7b49\u5927\u7684temp\u6570\u7ec4&#xff0c;\u6240\u6709merge\u64cd\u4f5c\u5171\u7528&#xff0c;\u662f\u6807\u51c6\u505a\u6cd5\u3002<\/p>\n<p>&lt;&#061; \u4fdd\u8bc1\u7a33\u5b9a\u6027&#xff1a;\u5f53\u5de6\u53f3\u4e24\u8fb9\u6709\u76f8\u7b49\u5143\u7d20\u65f6&#xff0c;\u53d6\u5de6\u8fb9\u7684&#xff08;temp[i] &lt;&#061; temp[j] \u65f6\u53d6 temp[i]&#xff09;&#xff0c;\u5de6\u8fb9\u5143\u7d20\u539f\u672c\u5c31\u5728\u524d\u9762&#xff0c;\u6240\u4ee5\u76f8\u5bf9\u987a\u5e8f\u4e0d\u53d8\u3002\u5982\u679c\u7528 &lt;&#xff0c;\u76f8\u7b49\u65f6\u53d6\u53f3\u8fb9\u7684&#xff0c;\u540e\u9762\u7684\u5143\u7d20\u8dd1\u5230\u4e86\u524d\u9762&#xff0c;\u7a33\u5b9a\u6027\u5c31\u88ab\u7834\u574f\u4e86\u3002<\/p>\n<h5>5.3.2 \u8fed\u4ee3\u7248&#xff08;\u81ea\u5e95\u5411\u4e0a&#xff09;<\/h5>\n<p>\u9012\u5f52\u6709\u8c03\u7528\u5f00\u9500&#xff0c;\u8fd8\u53ef\u4ee5\u7528\u8fed\u4ee3\u65b9\u5f0f\u81ea\u5e95\u5411\u4e0a\u5b9e\u73b0&#xff0c;\u907f\u514d\u9012\u5f52&#xff1a;<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">mergeSortIterative<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> temp <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span>n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ width\u4ece1\u5f00\u59cb\u500d\u589e: 1, 2, 4, 8, &#8230;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> width <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> width <span class=\"token operator\">&lt;<\/span> n<span class=\"token punctuation\">;<\/span> width <span class=\"token operator\">*&#061;<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u6bcf\u4e24\u4e2a\u76f8\u90bb\u7684width\u5927\u5c0f\u7684\u5b50\u6570\u7ec4\u8fdb\u884c\u5408\u5e76<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> n<span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&#043;&#061;<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">*<\/span> width<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token keyword\">int<\/span> left <span class=\"token operator\">&#061;<\/span> i<span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">int<\/span> mid <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">Math<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">min<\/span><span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&#043;<\/span> width <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">int<\/span> right <span class=\"token operator\">&#061;<\/span> <span class=\"token class-name\">Math<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">min<\/span><span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">*<\/span> width <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>mid <span class=\"token operator\">&lt;<\/span> right<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n                <span class=\"token function\">merge<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> left<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">,<\/span> right<span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u81ea\u5e95\u5411\u4e0a\u7684\u601d\u8def\u662f&#xff1a;\u5148\u4e24\u4e24\u5408\u5e76\u957f\u5ea6\u4e3a1\u7684\u5b50\u6570\u7ec4\u5f97\u5230\u957f\u5ea6\u4e3a2\u7684\u6709\u5e8f\u6570\u7ec4&#xff0c;\u518d\u4e24\u4e24\u5408\u5e76\u5f97\u5230\u957f\u5ea6\u4e3a4\u7684&#xff0c;\u4ee5\u6b64\u7c7b\u63a8\u76f4\u5230\u6574\u4e2a\u6570\u7ec4\u6709\u5e8f\u3002\u903b\u8f91\u7b49\u4ef7\u4e8e\u9012\u5f52\u7248&#xff0c;\u4f46\u4e0d\u4f7f\u7528\u9012\u5f52\u6808\u3002<\/p>\n<h4>5.4 \u590d\u6742\u5ea6\u63a8\u5bfc<\/h4>\n<p>\u65f6\u95f4\u590d\u6742\u5ea6\u7684\u4e25\u683c\u63a8\u5bfc&#xff1a;<\/p>\n<p>\u5f52\u5e76\u6392\u5e8f\u7684\u9012\u63a8\u5173\u7cfb\u4e3a&#xff1a;T(n) &#061; 2T(n\/2) &#043; O(n)<\/p>\n<p>\u7528\u9012\u5f52\u6811\u5c55\u5f00&#xff1a;<\/p>\n<p>  #mermaid-svg-fvAfP3tIb1Zq0rOq{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-fvAfP3tIb1Zq0rOq .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-fvAfP3tIb1Zq0rOq .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-fvAfP3tIb1Zq0rOq .error-icon{fill:#552222;}#mermaid-svg-fvAfP3tIb1Zq0rOq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-fvAfP3tIb1Zq0rOq .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-fvAfP3tIb1Zq0rOq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-fvAfP3tIb1Zq0rOq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-fvAfP3tIb1Zq0rOq .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-fvAfP3tIb1Zq0rOq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-fvAfP3tIb1Zq0rOq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-fvAfP3tIb1Zq0rOq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-fvAfP3tIb1Zq0rOq .marker.cross{stroke:#333333;}#mermaid-svg-fvAfP3tIb1Zq0rOq svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-fvAfP3tIb1Zq0rOq p{margin:0;}#mermaid-svg-fvAfP3tIb1Zq0rOq .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-fvAfP3tIb1Zq0rOq .cluster-label text{fill:#333;}#mermaid-svg-fvAfP3tIb1Zq0rOq .cluster-label span{color:#333;}#mermaid-svg-fvAfP3tIb1Zq0rOq .cluster-label span p{background-color:transparent;}#mermaid-svg-fvAfP3tIb1Zq0rOq .label text,#mermaid-svg-fvAfP3tIb1Zq0rOq span{fill:#333;color:#333;}#mermaid-svg-fvAfP3tIb1Zq0rOq .node rect,#mermaid-svg-fvAfP3tIb1Zq0rOq .node circle,#mermaid-svg-fvAfP3tIb1Zq0rOq .node ellipse,#mermaid-svg-fvAfP3tIb1Zq0rOq .node polygon,#mermaid-svg-fvAfP3tIb1Zq0rOq .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-fvAfP3tIb1Zq0rOq .rough-node .label text,#mermaid-svg-fvAfP3tIb1Zq0rOq .node .label text,#mermaid-svg-fvAfP3tIb1Zq0rOq .image-shape .label,#mermaid-svg-fvAfP3tIb1Zq0rOq .icon-shape .label{text-anchor:middle;}#mermaid-svg-fvAfP3tIb1Zq0rOq .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-fvAfP3tIb1Zq0rOq .rough-node .label,#mermaid-svg-fvAfP3tIb1Zq0rOq .node .label,#mermaid-svg-fvAfP3tIb1Zq0rOq .image-shape .label,#mermaid-svg-fvAfP3tIb1Zq0rOq .icon-shape .label{text-align:center;}#mermaid-svg-fvAfP3tIb1Zq0rOq .node.clickable{cursor:pointer;}#mermaid-svg-fvAfP3tIb1Zq0rOq .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-fvAfP3tIb1Zq0rOq .arrowheadPath{fill:#333333;}#mermaid-svg-fvAfP3tIb1Zq0rOq .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-fvAfP3tIb1Zq0rOq .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-fvAfP3tIb1Zq0rOq .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fvAfP3tIb1Zq0rOq .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-fvAfP3tIb1Zq0rOq .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fvAfP3tIb1Zq0rOq .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-fvAfP3tIb1Zq0rOq .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-fvAfP3tIb1Zq0rOq .cluster text{fill:#333;}#mermaid-svg-fvAfP3tIb1Zq0rOq .cluster span{color:#333;}#mermaid-svg-fvAfP3tIb1Zq0rOq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-fvAfP3tIb1Zq0rOq .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-fvAfP3tIb1Zq0rOq rect.text{fill:none;stroke-width:0;}#mermaid-svg-fvAfP3tIb1Zq0rOq .icon-shape,#mermaid-svg-fvAfP3tIb1Zq0rOq .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fvAfP3tIb1Zq0rOq .icon-shape p,#mermaid-svg-fvAfP3tIb1Zq0rOq .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-fvAfP3tIb1Zq0rOq .icon-shape .label rect,#mermaid-svg-fvAfP3tIb1Zq0rOq .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fvAfP3tIb1Zq0rOq .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-fvAfP3tIb1Zq0rOq .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-fvAfP3tIb1Zq0rOq :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u9012\u63a8\u5f0f\u5c55\u5f00 T(n) &#061; 2T(n\/2) &#043; cn<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u6bcf\u5c42\u603b\u4ee3\u4ef7<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>T(n) &#061; 2T(n\/2) &#043; cn\u603b\u4ee3\u4ef7: cn<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>T(n\/2)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>T(n\/2)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>T(n\/4)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>T(n\/4)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>T(n\/4)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>T(n\/4)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c0\u5c42: cn\u7b2c1\u5c42: 2\u00d7c(n\/2)&#061;cn\u7b2c2\u5c42: 4\u00d7c(n\/4)&#061;cn&#8230;\u7b2clog\u2082n\u5c42: n\u00d7c(1)&#061;cn\u603b\u8ba1: cn \u00d7 (log\u2082n&#043;1) &#061; O(n log n)<\/p>\n<p><\/span><\/p>\n<p>\u56fe5-3&#xff1a;\u5f52\u5e76\u6392\u5e8f\u9012\u5f52\u6811\u590d\u6742\u5ea6\u63a8\u5bfc\u2014\u2014\u6bcf\u5c42\u5408\u5e76\u603b\u4ee3\u4ef7\u90fd\u662fcn&#xff0c;\u5171log\u2082n&#043;1\u5c42&#xff0c;\u603b\u8ba1O(n log n)<\/p>\n<ul>\n<li>\u7b2c0\u5c42&#xff1a;1\u6b21merge&#xff0c;\u4ee3\u4ef7 cn<\/li>\n<li>\u7b2c1\u5c42&#xff1a;2\u6b21merge&#xff0c;\u6bcf\u6b21 cn\/2&#xff0c;\u603b\u4ee3\u4ef7 cn<\/li>\n<li>\u7b2ck\u5c42&#xff1a;2^k \u6b21 merge&#xff0c;\u6bcf\u6b21 cn\/2^k&#xff0c;\u603b\u4ee3\u4ef7 cn<\/li>\n<li>\u6811\u9ad8 log\u2082n &#043; 1 \u5c42<\/li>\n<li>\u603b\u4ee3\u4ef7&#xff1a;cn \u00d7 (log\u2082n &#043; 1) &#061; O(n log n)<\/li>\n<\/ul>\n<p>\u7a7a\u95f4\u590d\u6742\u5ea6&#xff1a;O(n)&#xff0c;\u9700\u8981\u8f85\u52a9\u6570\u7ec4\u3002\u9012\u5f52\u6808\u6df1\u5ea6\u4e3a O(log n)&#xff0c;\u4f46 O(n) \u7684\u8f85\u52a9\u6570\u7ec4\u662f\u4e3b\u8981\u5f00\u9500\u3002<\/p>\n<h4>5.5 \u7a33\u5b9a\u6027\u8bc1\u660e<\/h4>\n<p>\u5f52\u5e76\u6392\u5e8f\u662f\u7a33\u5b9a\u7684\u3002<\/p>\n<p>\u7a33\u5b9a\u6027\u6765\u81ea merge \u64cd\u4f5c\u4e2d temp[i] &lt;&#061; temp[j] \u7684 &lt;&#061;&#xff1a;\u5f53\u5de6\u53f3\u4e24\u8fb9\u6709\u76f8\u7b49\u5143\u7d20\u65f6&#xff0c;\u4f18\u5148\u53d6\u5de6\u8fb9\u7684\u5143\u7d20\u3002\u5de6\u8fb9\u5143\u7d20\u5728\u539f\u6570\u7ec4\u4e2d\u7684\u4f4d\u7f6e\u5728\u524d\u9762&#xff0c;\u53d6\u5230\u7ed3\u679c\u6570\u7ec4\u540e\u4ecd\u5728\u524d\u9762&#xff0c;\u76f8\u5bf9\u987a\u5e8f\u4e0d\u53d8\u3002\u9010\u5c42\u9012\u5f52\u90fd\u4fdd\u6301\u8fd9\u4e2a\u6027\u8d28&#xff0c;\u6700\u7ec8\u7ed3\u679c\u7a33\u5b9a\u3002<\/p>\n<h4>5.6 \u5f52\u5e76\u6392\u5e8f\u7684\u72ec\u7279\u4f18\u52bf<\/h4>\n<p>\u5f52\u5e76\u6392\u5e8f\u5728\u5b9e\u9645\u5de5\u7a0b\u4e2d\u6709\u4e09\u4e2a\u5176\u4ed6O(n log n)\u6392\u5e8f\u65e0\u6cd5\u66ff\u4ee3\u7684\u4f18\u52bf&#xff1a;<\/p>\n<p>\u4f18\u52bf1&#xff1a;\u9002\u5408\u94fe\u8868\u6392\u5e8f\u3002<\/p>\n<p>\u94fe\u8868\u4e0d\u652f\u6301\u968f\u673a\u8bbf\u95ee&#xff0c;\u5feb\u6392\u7684partition\u9700\u8981\u968f\u673a\u8bbf\u95ee&#xff0c;\u5806\u6392\u9700\u8981\u6570\u7ec4\u7d22\u5f15&#xff0c;\u90fd\u4e0d\u9002\u5408\u94fe\u8868\u3002\u4f46\u5f52\u5e76\u6392\u5e8f\u7684merge\u53ea\u9700\u8981\u987a\u5e8f\u904d\u5386&#xff0c;\u5929\u7136\u9002\u5408\u94fe\u8868\u3002\u94fe\u8868\u7248\u7684\u5f52\u5e76\u6392\u5e8f\u4e0d\u9700\u8981\u989d\u5916\u7a7a\u95f4\u2014\u2014\u901a\u8fc7\u4fee\u6539\u6307\u9488\u5c31\u80fd\u5408\u5e76\u4e24\u4e2a\u6709\u5e8f\u94fe\u8868\u3002<\/p>\n<p><span class=\"token comment\">\/\/ \u94fe\u8868\u5f52\u5e76\u6392\u5e8f<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token class-name\">ListNode<\/span> <span class=\"token function\">sortList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ListNode<\/span> head<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>head <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span> <span class=\"token operator\">||<\/span> head<span class=\"token punctuation\">.<\/span>next <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> head<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5feb\u6162\u6307\u9488\u627e\u4e2d\u70b9<\/span><br \/>\n    <span class=\"token class-name\">ListNode<\/span> slow <span class=\"token operator\">&#061;<\/span> head<span class=\"token punctuation\">,<\/span> fast <span class=\"token operator\">&#061;<\/span> head<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>fast <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span> <span class=\"token operator\">&amp;&amp;<\/span> fast<span class=\"token punctuation\">.<\/span>next <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        slow <span class=\"token operator\">&#061;<\/span> slow<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">;<\/span><br \/>\n        fast <span class=\"token operator\">&#061;<\/span> fast<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token class-name\">ListNode<\/span> right <span class=\"token operator\">&#061;<\/span> slow<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">;<\/span><br \/>\n    slow<span class=\"token punctuation\">.<\/span>next <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u65ad\u5f00<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u9012\u5f52\u6392\u5e8f\u4e24\u534a<\/span><br \/>\n    <span class=\"token class-name\">ListNode<\/span> left <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">sortList<\/span><span class=\"token punctuation\">(<\/span>head<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    right <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">sortList<\/span><span class=\"token punctuation\">(<\/span>right<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u5408\u5e76<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">mergeList<\/span><span class=\"token punctuation\">(<\/span>left<span class=\"token punctuation\">,<\/span> right<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token class-name\">ListNode<\/span> <span class=\"token function\">mergeList<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ListNode<\/span> l1<span class=\"token punctuation\">,<\/span> <span class=\"token class-name\">ListNode<\/span> l2<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">ListNode<\/span> dummy <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ListNode<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token class-name\">ListNode<\/span> cur <span class=\"token operator\">&#061;<\/span> dummy<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>l1 <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span> <span class=\"token operator\">&amp;&amp;<\/span> l2 <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>l1<span class=\"token punctuation\">.<\/span>val <span class=\"token operator\">&lt;&#061;<\/span> l2<span class=\"token punctuation\">.<\/span>val<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span>  <span class=\"token comment\">\/\/ &lt;&#061; \u4fdd\u8bc1\u7a33\u5b9a<\/span><br \/>\n            cur<span class=\"token punctuation\">.<\/span>next <span class=\"token operator\">&#061;<\/span> l1<span class=\"token punctuation\">;<\/span><br \/>\n            l1 <span class=\"token operator\">&#061;<\/span> l1<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            cur<span class=\"token punctuation\">.<\/span>next <span class=\"token operator\">&#061;<\/span> l2<span class=\"token punctuation\">;<\/span><br \/>\n            l2 <span class=\"token operator\">&#061;<\/span> l2<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        cur <span class=\"token operator\">&#061;<\/span> cur<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    cur<span class=\"token punctuation\">.<\/span>next <span class=\"token operator\">&#061;<\/span> l1 <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span> <span class=\"token operator\">?<\/span> l1 <span class=\"token operator\">:<\/span> l2<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> dummy<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u4f18\u52bf2&#xff1a;\u9002\u5408\u5916\u90e8\u6392\u5e8f\u3002<\/p>\n<p>\u5f53\u6570\u636e\u91cf\u8fdc\u8d85\u5185\u5b58\u65f6&#xff08;\u5982100GB\u6587\u4ef6\u6392\u5e8f&#xff09;&#xff0c;\u65e0\u6cd5\u5168\u90e8\u52a0\u8f7d\u5230\u5185\u5b58\u3002\u5f52\u5e76\u6392\u5e8f\u5929\u7136\u9002\u5408\u5916\u90e8\u6392\u5e8f&#xff1a;\u5148\u628a\u6570\u636e\u5206\u5757\u52a0\u8f7d\u5230\u5185\u5b58\u6392\u5e8f&#xff0c;\u5199\u5165\u4e34\u65f6\u6587\u4ef6&#xff0c;\u518d\u591a\u8def\u5f52\u5e76\u3002<\/p>\n<p>  #mermaid-svg-G3XSY9xuAV7hlq1W{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-G3XSY9xuAV7hlq1W .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-G3XSY9xuAV7hlq1W .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-G3XSY9xuAV7hlq1W .error-icon{fill:#552222;}#mermaid-svg-G3XSY9xuAV7hlq1W .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-G3XSY9xuAV7hlq1W .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-G3XSY9xuAV7hlq1W .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-G3XSY9xuAV7hlq1W .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-G3XSY9xuAV7hlq1W .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-G3XSY9xuAV7hlq1W .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-G3XSY9xuAV7hlq1W .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-G3XSY9xuAV7hlq1W .marker{fill:#333333;stroke:#333333;}#mermaid-svg-G3XSY9xuAV7hlq1W .marker.cross{stroke:#333333;}#mermaid-svg-G3XSY9xuAV7hlq1W svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-G3XSY9xuAV7hlq1W p{margin:0;}#mermaid-svg-G3XSY9xuAV7hlq1W .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-G3XSY9xuAV7hlq1W .cluster-label text{fill:#333;}#mermaid-svg-G3XSY9xuAV7hlq1W .cluster-label span{color:#333;}#mermaid-svg-G3XSY9xuAV7hlq1W .cluster-label span p{background-color:transparent;}#mermaid-svg-G3XSY9xuAV7hlq1W .label text,#mermaid-svg-G3XSY9xuAV7hlq1W span{fill:#333;color:#333;}#mermaid-svg-G3XSY9xuAV7hlq1W .node rect,#mermaid-svg-G3XSY9xuAV7hlq1W .node circle,#mermaid-svg-G3XSY9xuAV7hlq1W .node ellipse,#mermaid-svg-G3XSY9xuAV7hlq1W .node polygon,#mermaid-svg-G3XSY9xuAV7hlq1W .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-G3XSY9xuAV7hlq1W .rough-node .label text,#mermaid-svg-G3XSY9xuAV7hlq1W .node .label text,#mermaid-svg-G3XSY9xuAV7hlq1W .image-shape .label,#mermaid-svg-G3XSY9xuAV7hlq1W .icon-shape .label{text-anchor:middle;}#mermaid-svg-G3XSY9xuAV7hlq1W .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-G3XSY9xuAV7hlq1W .rough-node .label,#mermaid-svg-G3XSY9xuAV7hlq1W .node .label,#mermaid-svg-G3XSY9xuAV7hlq1W .image-shape .label,#mermaid-svg-G3XSY9xuAV7hlq1W .icon-shape .label{text-align:center;}#mermaid-svg-G3XSY9xuAV7hlq1W .node.clickable{cursor:pointer;}#mermaid-svg-G3XSY9xuAV7hlq1W .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-G3XSY9xuAV7hlq1W .arrowheadPath{fill:#333333;}#mermaid-svg-G3XSY9xuAV7hlq1W .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-G3XSY9xuAV7hlq1W .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-G3XSY9xuAV7hlq1W .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-G3XSY9xuAV7hlq1W .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-G3XSY9xuAV7hlq1W .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-G3XSY9xuAV7hlq1W .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-G3XSY9xuAV7hlq1W .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-G3XSY9xuAV7hlq1W .cluster text{fill:#333;}#mermaid-svg-G3XSY9xuAV7hlq1W .cluster span{color:#333;}#mermaid-svg-G3XSY9xuAV7hlq1W div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-G3XSY9xuAV7hlq1W .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-G3XSY9xuAV7hlq1W rect.text{fill:none;stroke-width:0;}#mermaid-svg-G3XSY9xuAV7hlq1W .icon-shape,#mermaid-svg-G3XSY9xuAV7hlq1W .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-G3XSY9xuAV7hlq1W .icon-shape p,#mermaid-svg-G3XSY9xuAV7hlq1W .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-G3XSY9xuAV7hlq1W .icon-shape .label rect,#mermaid-svg-G3XSY9xuAV7hlq1W .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-G3XSY9xuAV7hlq1W .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-G3XSY9xuAV7hlq1W .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-G3XSY9xuAV7hlq1W :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5916\u90e8\u5f52\u5e76\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>100GB\u6587\u4ef6<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5206\u5757100MB\u8bfb\u5165\u5185\u5b58<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5185\u5b58\u6392\u5e8f\u2192\u5199\u51651000\u4e2a\u4e34\u65f6\u6587\u4ef6<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>k\u8def\u5f52\u5e76&#xff08;\u7528\u5806\u7ef4\u62a4k\u4e2a\u6587\u4ef6\u7684\u6700\u5c0f\u503c&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>100GB\u6709\u5e8f\u6587\u4ef6<\/p>\n<p><\/span><\/p>\n<p>\u56fe5-4&#xff1a;\u5916\u90e8\u5f52\u5e76\u6392\u5e8f\u2014\u2014\u5927\u6587\u4ef6\u5206\u5757\u5185\u5b58\u6392\u5e8f&#xff0c;\u7136\u540e\u591a\u8def\u5f52\u5e76\u3002\u5f52\u5e76\u662f\u5916\u90e8\u6392\u5e8f\u7684\u6807\u51c6\u65b9\u6848<\/p>\n<p>\u4f18\u52bf3&#xff1a;\u7a33\u5b9a\u4e14\u6027\u80fd\u53ef\u9884\u6d4b\u3002<\/p>\n<p>\u5f52\u5e76\u6392\u5e8f\u7684\u6700\u597d\u3001\u5e73\u5747\u3001\u6700\u574f\u90fd\u662f O(n log n)&#xff0c;\u6ca1\u6709\u6700\u574f\u9000\u5316\u95ee\u9898\u3002\u5bf9\u4e8e\u9700\u8981\u7a33\u5b9a\u6392\u5e8f\u4e14\u8981\u6c42\u6027\u80fd\u53ef\u9884\u6d4b\u7684\u573a\u666f&#xff08;\u5982\u6570\u636e\u5e93\u6392\u5e8f&#xff09;&#xff0c;\u5f52\u5e76\u6392\u5e8f\u662f\u9996\u9009\u3002<\/p>\n<h4>5.7 \u5f52\u5e76\u6392\u5e8f vs \u5feb\u901f\u6392\u5e8f<\/h4>\n<p>\u8fd9\u662f\u9762\u8bd5\u548c\u5de5\u7a0b\u4e2d\u6700\u5e38\u88ab\u95ee\u5230\u7684\u95ee\u9898&#xff1a;\u4e3a\u4ec0\u4e48\u5feb\u6392\u5e73\u5747O(n log n)\u4f46\u5b9e\u9645\u6bd4\u5f52\u5e76\u5feb&#xff0c;\u800c\u5f52\u5e76\u6700\u574f\u4e5f\u662fO(n log n)\u53cd\u800c\u7528\u5f97\u5c11&#xff1f;<\/p>\n<table>\n<tr>\u7ef4\u5ea6\u5f52\u5e76\u6392\u5e8f\u5feb\u901f\u6392\u5e8f<\/tr>\n<tbody>\n<tr>\n<td>\u6700\u574f\u65f6\u95f4<\/td>\n<td>O(n log n)<\/td>\n<td>O(n\u00b2)<\/td>\n<\/tr>\n<tr>\n<td>\u7a7a\u95f4<\/td>\n<td>O(n)<\/td>\n<td>O(log n)<\/td>\n<\/tr>\n<tr>\n<td>\u7a33\u5b9a\u6027<\/td>\n<td>\u7a33\u5b9a<\/td>\n<td>\u4e0d\u7a33\u5b9a<\/td>\n<\/tr>\n<tr>\n<td>\u7f13\u5b58\u53cb\u597d\u5ea6<\/td>\n<td>\u5dee&#xff08;\u8df3\u8dc3\u5f0f\u8bbf\u95ee&#xff09;<\/td>\n<td>\u597d&#xff08;\u987a\u5e8f\u626b\u63cf&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>\u539f\u5730\u6392\u5e8f<\/td>\n<td>\u5426<\/td>\n<td>\u662f<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u7b54\u6848\u5c06\u5728\u7b2c6\u7ae0\u8be6\u7ec6\u89e3\u7b54\u3002<\/p>\n<hr \/>\n<h3>\u7b2c6\u7ae0 \u5feb\u901f\u6392\u5e8f&#xff1a;\u4e3a\u4ec0\u4e48\u5b83\u662f\u5b9e\u9645\u6700\u5feb\u7684<\/h3>\n<h4>6.1 \u6838\u5fc3\u601d\u60f3<\/h4>\n<p>\u5feb\u901f\u6392\u5e8f\u7684\u6838\u5fc3\u601d\u60f3\u662f partition&#xff08;\u5206\u533a&#xff09;&#xff1a;\u9009\u4e00\u4e2a\u57fa\u51c6\u503c&#xff08;pivot&#xff09;&#xff0c;\u628a\u6570\u7ec4\u5206\u6210&#034;\u5c0f\u4e8epivot&#034;\u548c&#034;\u5927\u4e8epivot&#034;\u4e24\u90e8\u5206&#xff0c;\u7136\u540e\u5bf9\u4e24\u90e8\u5206\u9012\u5f52\u6392\u5e8f\u3002<\/p>\n<p>\u4e0e\u5f52\u5e76\u6392\u5e8f\u7684\u5bf9\u6bd4&#xff1a;<\/p>\n<ul>\n<li>\u5f52\u5e76\u6392\u5e8f&#xff1a;\u5148\u9012\u5f52\u6392\u5e8f&#xff0c;\u518d\u5408\u5e76&#xff08;\u5408\u5e76\u662f\u4e3b\u8981\u5de5\u4f5c&#xff09;<\/li>\n<li>\u5feb\u901f\u6392\u5e8f&#xff1a;\u5148\u5206\u533a&#xff0c;\u518d\u9012\u5f52\u6392\u5e8f&#xff08;\u5206\u533a\u662f\u4e3b\u8981\u5de5\u4f5c&#xff09;<\/li>\n<\/ul>\n<p>\u5feb\u6392\u7684\u5de7\u5999\u4e4b\u5904\u5728\u4e8e&#xff1a;\u5206\u533a\u5b8c\u6210\u540e&#xff0c;pivot\u5df2\u7ecf\u5728\u6700\u7ec8\u4f4d\u7f6e\u4e86&#xff0c;\u4e0d\u9700\u8981\u50cf\u5f52\u5e76\u90a3\u6837\u518d\u5408\u5e76\u3002\u8fd9\u662f\u56e0\u4e3a\u5206\u533a\u7684\u5b9a\u4e49\u4fdd\u8bc1\u4e86\u5de6\u8fb9\u5168\u90e8 \u2264 pivot&#xff0c;\u53f3\u8fb9\u5168\u90e8 \u2265 pivot&#xff0c;pivot\u7684\u4f4d\u7f6e\u4e0d\u4f1a\u53d8\u4e86\u3002<\/p>\n<h4>6.2 Partition \u8be6\u89e3<\/h4>\n<p>\u5feb\u6392\u7684\u7075\u9b42\u662f partition \u51fd\u6570\u3002\u6700\u7ecf\u5178\u7684\u662f Lomuto \u5206\u533a\u65b9\u6848&#xff1a;<\/p>\n<p>  #mermaid-svg-3ThULh5NSMuP4b2H{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-3ThULh5NSMuP4b2H .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-3ThULh5NSMuP4b2H .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-3ThULh5NSMuP4b2H .error-icon{fill:#552222;}#mermaid-svg-3ThULh5NSMuP4b2H .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3ThULh5NSMuP4b2H .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-3ThULh5NSMuP4b2H .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3ThULh5NSMuP4b2H .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3ThULh5NSMuP4b2H .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-3ThULh5NSMuP4b2H .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3ThULh5NSMuP4b2H .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3ThULh5NSMuP4b2H .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3ThULh5NSMuP4b2H .marker.cross{stroke:#333333;}#mermaid-svg-3ThULh5NSMuP4b2H svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3ThULh5NSMuP4b2H p{margin:0;}#mermaid-svg-3ThULh5NSMuP4b2H .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-3ThULh5NSMuP4b2H .cluster-label text{fill:#333;}#mermaid-svg-3ThULh5NSMuP4b2H .cluster-label span{color:#333;}#mermaid-svg-3ThULh5NSMuP4b2H .cluster-label span p{background-color:transparent;}#mermaid-svg-3ThULh5NSMuP4b2H .label text,#mermaid-svg-3ThULh5NSMuP4b2H span{fill:#333;color:#333;}#mermaid-svg-3ThULh5NSMuP4b2H .node rect,#mermaid-svg-3ThULh5NSMuP4b2H .node circle,#mermaid-svg-3ThULh5NSMuP4b2H .node ellipse,#mermaid-svg-3ThULh5NSMuP4b2H .node polygon,#mermaid-svg-3ThULh5NSMuP4b2H .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3ThULh5NSMuP4b2H .rough-node .label text,#mermaid-svg-3ThULh5NSMuP4b2H .node .label text,#mermaid-svg-3ThULh5NSMuP4b2H .image-shape .label,#mermaid-svg-3ThULh5NSMuP4b2H .icon-shape .label{text-anchor:middle;}#mermaid-svg-3ThULh5NSMuP4b2H .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-3ThULh5NSMuP4b2H .rough-node .label,#mermaid-svg-3ThULh5NSMuP4b2H .node .label,#mermaid-svg-3ThULh5NSMuP4b2H .image-shape .label,#mermaid-svg-3ThULh5NSMuP4b2H .icon-shape .label{text-align:center;}#mermaid-svg-3ThULh5NSMuP4b2H .node.clickable{cursor:pointer;}#mermaid-svg-3ThULh5NSMuP4b2H .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-3ThULh5NSMuP4b2H .arrowheadPath{fill:#333333;}#mermaid-svg-3ThULh5NSMuP4b2H .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3ThULh5NSMuP4b2H .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3ThULh5NSMuP4b2H .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3ThULh5NSMuP4b2H .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-3ThULh5NSMuP4b2H .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3ThULh5NSMuP4b2H .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-3ThULh5NSMuP4b2H .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3ThULh5NSMuP4b2H .cluster text{fill:#333;}#mermaid-svg-3ThULh5NSMuP4b2H .cluster span{color:#333;}#mermaid-svg-3ThULh5NSMuP4b2H div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3ThULh5NSMuP4b2H .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-3ThULh5NSMuP4b2H rect.text{fill:none;stroke-width:0;}#mermaid-svg-3ThULh5NSMuP4b2H .icon-shape,#mermaid-svg-3ThULh5NSMuP4b2H .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-3ThULh5NSMuP4b2H .icon-shape p,#mermaid-svg-3ThULh5NSMuP4b2H .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-3ThULh5NSMuP4b2H .icon-shape .label rect,#mermaid-svg-3ThULh5NSMuP4b2H .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-3ThULh5NSMuP4b2H .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-3ThULh5NSMuP4b2H .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-3ThULh5NSMuP4b2H :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>Lomuto Partition pivot&#061;4, arr&#061;[5,3,8,1,6,2,7,4]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u521d\u59cb: i&#061;-1, j\u4ece0\u52306\u626b\u63cf<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>j&#061;0: arr[0]&#061;5 &gt; 4, \u4e0d\u52a8, i&#061;-1<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>j&#061;1: arr[1]&#061;3 \u2264 4, i&#061;0, \u4ea4\u6362arr[0]\u2194arr[1] \u2192 [3,5,8,1,6,2,7,4]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>j&#061;2: arr[2]&#061;8 &gt; 4, \u4e0d\u52a8, i&#061;0<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>j&#061;3: arr[3]&#061;1 \u2264 4, i&#061;1, \u4ea4\u6362arr[1]\u2194arr[3] \u2192 [3,1,8,5,6,2,7,4]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>j&#061;4: arr[4]&#061;6 &gt; 4, \u4e0d\u52a8, i&#061;1<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>j&#061;5: arr[5]&#061;2 \u2264 4, i&#061;2, \u4ea4\u6362arr[2]\u2194arr[5] \u2192 [3,1,2,5,6,8,7,4]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>j&#061;6: arr[6]&#061;7 &gt; 4, \u4e0d\u52a8, i&#061;2<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u626b\u63cf\u5b8c\u6bd5: \u4ea4\u6362arr[i&#043;1]\u2194arr[7] \u2192 [3,1,2,4,6,8,7,5]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>pivot\u5728\u4f4d\u7f6e3, \u5de6\u8fb9[3,1,2]\u5168\u22644, \u53f3\u8fb9[6,8,7,5]\u5168&gt;4<\/p>\n<p><\/span><\/p>\n<p>\u56fe6-1&#xff1a;Lomuto Partition\u5b8c\u6574\u8fc7\u7a0b\u2014\u2014i\u7ef4\u62a4&#034;\u2264pivot\u533a\u57df&#034;\u7684\u53f3\u8fb9\u754c&#xff0c;j\u626b\u63cf\u6bcf\u4e2a\u5143\u7d20&#xff0c;\u9047\u5230\u5c0f\u7684\u5c31\u7eb3\u5165\u533a\u57df<\/p>\n<p>Lomuto Partition \u7684\u903b\u8f91&#xff1a;<\/p>\n<p><span class=\"token comment\">\/\/ \u8fd4\u56depivot\u6700\u7ec8\u4f4d\u7f6e&#xff0c;arr[lo..hi]\u88ab\u5206\u4e3a \u2264pivot \u548c &gt;pivot \u4e24\u90e8\u5206<\/span><br \/>\n<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token function\">partition<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> pivot <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>hi<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u9009\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4f5c\u4e3apivot<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> lo <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>       <span class=\"token comment\">\/\/ i\u6307\u5411&#034;\u2264pivot\u533a\u57df&#034;\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> lo<span class=\"token punctuation\">;<\/span> j <span class=\"token operator\">&lt;<\/span> hi<span class=\"token punctuation\">;<\/span> j<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;&#061;<\/span> pivot<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">,<\/span> j<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u628a\u5c0f\u5143\u7d20\u4ea4\u6362\u5230\u2264\u533a\u57df<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> i <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ pivot\u653e\u5230\u4e2d\u95f4<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> i <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>           <span class=\"token comment\">\/\/ \u8fd4\u56depivot\u6700\u7ec8\u4f4d\u7f6e<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u4e3a\u4ec0\u4e48\u8fd9\u4e2a\u5206\u533a\u80fd\u6b63\u786e\u5de5\u4f5c&#xff1a;\u53d8\u91cf i \u7ef4\u62a4\u4e86&#034;\u5df2\u77e5 \u2264 pivot \u7684\u533a\u57df&#034;\u7684\u53f3\u8fb9\u754c\u3002\u53d8\u91cf j \u4ece\u5de6\u5411\u53f3\u626b\u63cf&#xff0c;\u6bcf\u5f53\u53d1\u73b0\u4e00\u4e2a \u2264 pivot \u7684\u5143\u7d20&#xff0c;\u5c31\u6269\u5927 \u2264 \u533a\u57df&#xff08;i&#043;&#043;&#xff09;\u5e76\u628a\u8be5\u5143\u7d20\u4ea4\u6362\u8fdb\u6765\u3002\u626b\u63cf\u7ed3\u675f\u540e&#xff0c;arr[lo..i] \u5168\u90e8 \u2264 pivot&#xff0c;arr[i&#043;1..hi-1] \u5168\u90e8 &gt; pivot&#xff0c;\u6700\u540e\u628a pivot \u653e\u5230 i&#043;1 \u4f4d\u7f6e&#xff0c;\u5b83\u5c31\u5230\u4e86\u6b63\u786e\u7684\u6700\u7ec8\u4f4d\u7f6e\u3002<\/p>\n<h4>6.3 \u5b8c\u6574\u5feb\u6392\u5b9e\u73b0<\/h4>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">quickSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">quickSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> arr<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">quickSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>lo <span class=\"token operator\">&gt;&#061;<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> p <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">partition<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5206\u533a&#xff0c;p\u662fpivot\u6700\u7ec8\u4f4d\u7f6e<\/span><br \/>\n    <span class=\"token function\">quickSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> p <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>       <span class=\"token comment\">\/\/ \u6392\u5de6\u534a<\/span><br \/>\n    <span class=\"token function\">quickSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> p <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>       <span class=\"token comment\">\/\/ \u6392\u53f3\u534a<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6ce8\u610f&#xff1a;pivot\u4f4d\u7f6ep\u4e0d\u9700\u8981\u518d\u5904\u7406&#xff0c;\u5b83\u5df2\u7ecf\u5728\u6700\u7ec8\u4f4d\u7f6e\u4e86<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u5feb\u6392\u7684\u9012\u5f52\u7ed3\u6784\u4e0e\u5f52\u5e76\u4e0d\u540c&#xff1a;\u5f52\u5e76\u662f&#034;\u5148\u6392\u540e\u5408&#034;&#xff0c;\u5feb\u6392\u662f&#034;\u5148\u5206\u540e\u6392\u4e0d\u5408&#034;\u3002\u5f52\u5e76\u7684merge\u5728\u9012\u5f52\u4e4b\u540e&#xff0c;\u5feb\u6392\u7684partition\u5728\u9012\u5f52\u4e4b\u524d\u3002<\/p>\n<h4>6.4 Hoare \u5206\u533a\u65b9\u6848<\/h4>\n<p>Lomuto \u65b9\u6848\u7b80\u5355\u4f46\u6548\u7387\u4e0d\u662f\u6700\u9ad8\u2014\u2014\u5b83\u7528 arr[hi] \u4f5c pivot \u5e76\u53ea\u505a\u5355\u5411\u626b\u63cf\u3002Hoare \u539f\u59cb\u65b9\u6848\u7528\u53cc\u6307\u9488\u4ece\u4e24\u7aef\u5411\u4e2d\u95f4\u8d70&#xff0c;\u4ea4\u6362\u9006\u5e8f\u5bf9&#xff0c;\u5e73\u5747\u4ea4\u6362\u6b21\u6570\u66f4\u5c11&#xff1a;<\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token function\">partitionHoare<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> pivot <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>lo <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>hi <span class=\"token operator\">&#8211;<\/span> lo<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u4e2d\u95f4\u5143\u7d20\u4f5cpivot<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> lo <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> j <span class=\"token operator\">&#061;<\/span> hi <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">do<\/span> <span class=\"token punctuation\">{<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span> pivot<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5de6\u6307\u9488\u627e\u2265pivot\u7684<\/span><br \/>\n        <span class=\"token keyword\">do<\/span> <span class=\"token punctuation\">{<\/span> j<span class=\"token operator\">&#8212;<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> pivot<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u53f3\u6307\u9488\u627e\u2264pivot\u7684<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&gt;&#061;<\/span> j<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> j<span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u6307\u9488\u76f8\u9047&#xff0c;\u8fd4\u56de\u5206\u754c\u70b9<\/span><br \/>\n        <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">,<\/span> j<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>       <span class=\"token comment\">\/\/ \u4ea4\u6362\u9006\u5e8f\u5bf9<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>Hoare \u65b9\u6848\u7684\u7279\u70b9&#xff1a;\u7528 do-while \u800c\u975e while&#xff0c;\u4fdd\u8bc1\u6307\u9488\u81f3\u5c11\u79fb\u52a8\u4e00\u6b65&#xff08;\u907f\u514d\u6b7b\u5faa\u73af&#xff09;&#xff1b;\u8fd4\u56de\u7684\u662f j \u800c\u975e i&#043;1&#xff0c;\u5206\u533a\u70b9\u4e0d\u4e00\u5b9a\u662fpivot\u7684\u6700\u7ec8\u4f4d\u7f6e&#xff0c;\u4f46\u4fdd\u8bc1 arr[lo..j] \u2264 arr[j&#043;1..hi]&#xff0c;\u9012\u5f52\u65f6 quickSort(arr, lo, j) \u548c quickSort(arr, j&#043;1, hi)\u3002<\/p>\n<p>\u4e24\u79cd\u65b9\u6848\u7684\u5bf9\u6bd4&#xff1a;<\/p>\n<table>\n<tr>\u7ef4\u5ea6LomutoHoare<\/tr>\n<tbody>\n<tr>\n<td>\u4ea4\u6362\u6b21\u6570<\/td>\n<td>\u8f83\u591a&#xff08;\u6bcf\u4e2a\u5c0f\u5143\u7d20\u90fd\u4ea4\u6362&#xff09;<\/td>\n<td>\u8f83\u5c11&#xff08;\u53ea\u5728\u9006\u5e8f\u65f6\u4ea4\u6362&#xff09;<\/td>\n<\/tr>\n<tr>\n<td>\u4ee3\u7801\u590d\u6742\u5ea6<\/td>\n<td>\u7b80\u5355<\/td>\n<td>\u7a0d\u590d\u6742<\/td>\n<\/tr>\n<tr>\n<td>pivot\u4f4d\u7f6e<\/td>\n<td>\u786e\u5b9a\u5728\u6700\u7ec8\u4f4d\u7f6e<\/td>\n<td>\u4e0d\u4e00\u5b9a\u5728\u6700\u7ec8\u4f4d\u7f6e<\/td>\n<\/tr>\n<tr>\n<td>\u9002\u7528\u573a\u666f<\/td>\n<td>\u6559\u5b66\u4f18\u5148<\/td>\n<td>\u5de5\u7a0b\u4f18\u5148<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>6.5 \u590d\u6742\u5ea6\u5206\u6790<\/h4>\n<p>\u5feb\u6392\u7684\u590d\u6742\u5ea6\u53d6\u51b3\u4e8e pivot \u7684\u9009\u62e9\u8d28\u91cf\u2014\u2014\u5373\u5206\u533a\u662f\u5426\u5e73\u8861\u3002<\/p>\n<p>\u6700\u597d\u60c5\u51b5&#xff1a;\u6bcf\u6b21 pivot \u6070\u597d\u662f\u4e2d\u4f4d\u6570&#xff0c;\u628a\u6570\u7ec4\u7b49\u5206\u4e24\u534a\u3002<\/p>\n<p>T(n) &#061; 2T(n\/2) &#043; O(n)  \u2192  O(n log n)<\/p>\n<p>\u4e0e\u5f52\u5e76\u6392\u5e8f\u76f8\u540c\u7684\u9012\u63a8\u5f0f&#xff0c;\u4f46\u5e38\u6570\u56e0\u5b50\u66f4\u5c0f&#xff08;partition \u6bd4 merge \u7b80\u5355&#xff09;\u3002<\/p>\n<p>\u6700\u574f\u60c5\u51b5&#xff1a;\u6bcf\u6b21 pivot \u662f\u6700\u5927\u6216\u6700\u5c0f\u503c&#xff0c;\u5206\u533a\u6781\u5ea6\u4e0d\u5e73\u8861&#xff08;\u4e00\u8fb90\u4e2a&#xff0c;\u53e6\u4e00\u8fb9n-1\u4e2a&#xff09;\u3002<\/p>\n<p>T(n) &#061; T(n-1) &#043; O(n)  \u2192  O(n\u00b2)<\/p>\n<p>\u8fd9\u53d1\u751f\u5728\u6570\u7ec4\u5df2\u6709\u5e8f\u4e14\u603b\u662f\u9009\u7b2c\u4e00\u4e2a\u6216\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u4f5c pivot \u7684\u573a\u666f\u3002<\/p>\n<p>\u5e73\u5747\u60c5\u51b5&#xff1a;O(n log n)\u3002\u53ef\u4ee5\u7528\u6982\u7387\u5206\u6790\u8bc1\u660e&#xff0c;\u5373\u4f7fpivot\u968f\u673a\u9009&#xff0c;\u671f\u671b\u6bd4\u8f83\u6b21\u6570\u7ea6\u4e3a 2n ln n \u2248 1.39 n log\u2082 n&#xff0c;\u6bd4\u5f52\u5e76\u6392\u5e8f\u7684 n log\u2082 n \u7a0d\u591a&#xff0c;\u4f46\u5e38\u6570\u56e0\u5b50\u66f4\u5c0f\u3002<\/p>\n<p>  #mermaid-svg-B5rm8Vnlud65WqqL{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-B5rm8Vnlud65WqqL .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-B5rm8Vnlud65WqqL .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-B5rm8Vnlud65WqqL .error-icon{fill:#552222;}#mermaid-svg-B5rm8Vnlud65WqqL .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-B5rm8Vnlud65WqqL .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-B5rm8Vnlud65WqqL .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-B5rm8Vnlud65WqqL .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-B5rm8Vnlud65WqqL .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-B5rm8Vnlud65WqqL .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-B5rm8Vnlud65WqqL .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-B5rm8Vnlud65WqqL .marker{fill:#333333;stroke:#333333;}#mermaid-svg-B5rm8Vnlud65WqqL .marker.cross{stroke:#333333;}#mermaid-svg-B5rm8Vnlud65WqqL svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-B5rm8Vnlud65WqqL p{margin:0;}#mermaid-svg-B5rm8Vnlud65WqqL .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-B5rm8Vnlud65WqqL .cluster-label text{fill:#333;}#mermaid-svg-B5rm8Vnlud65WqqL .cluster-label span{color:#333;}#mermaid-svg-B5rm8Vnlud65WqqL .cluster-label span p{background-color:transparent;}#mermaid-svg-B5rm8Vnlud65WqqL .label text,#mermaid-svg-B5rm8Vnlud65WqqL span{fill:#333;color:#333;}#mermaid-svg-B5rm8Vnlud65WqqL .node rect,#mermaid-svg-B5rm8Vnlud65WqqL .node circle,#mermaid-svg-B5rm8Vnlud65WqqL .node ellipse,#mermaid-svg-B5rm8Vnlud65WqqL .node polygon,#mermaid-svg-B5rm8Vnlud65WqqL .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-B5rm8Vnlud65WqqL .rough-node .label text,#mermaid-svg-B5rm8Vnlud65WqqL .node .label text,#mermaid-svg-B5rm8Vnlud65WqqL .image-shape .label,#mermaid-svg-B5rm8Vnlud65WqqL .icon-shape .label{text-anchor:middle;}#mermaid-svg-B5rm8Vnlud65WqqL .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-B5rm8Vnlud65WqqL .rough-node .label,#mermaid-svg-B5rm8Vnlud65WqqL .node .label,#mermaid-svg-B5rm8Vnlud65WqqL .image-shape .label,#mermaid-svg-B5rm8Vnlud65WqqL .icon-shape .label{text-align:center;}#mermaid-svg-B5rm8Vnlud65WqqL .node.clickable{cursor:pointer;}#mermaid-svg-B5rm8Vnlud65WqqL .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-B5rm8Vnlud65WqqL .arrowheadPath{fill:#333333;}#mermaid-svg-B5rm8Vnlud65WqqL .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-B5rm8Vnlud65WqqL .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-B5rm8Vnlud65WqqL .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-B5rm8Vnlud65WqqL .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-B5rm8Vnlud65WqqL .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-B5rm8Vnlud65WqqL .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-B5rm8Vnlud65WqqL .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-B5rm8Vnlud65WqqL .cluster text{fill:#333;}#mermaid-svg-B5rm8Vnlud65WqqL .cluster span{color:#333;}#mermaid-svg-B5rm8Vnlud65WqqL div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-B5rm8Vnlud65WqqL .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-B5rm8Vnlud65WqqL rect.text{fill:none;stroke-width:0;}#mermaid-svg-B5rm8Vnlud65WqqL .icon-shape,#mermaid-svg-B5rm8Vnlud65WqqL .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-B5rm8Vnlud65WqqL .icon-shape p,#mermaid-svg-B5rm8Vnlud65WqqL .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-B5rm8Vnlud65WqqL .icon-shape .label rect,#mermaid-svg-B5rm8Vnlud65WqqL .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-B5rm8Vnlud65WqqL .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-B5rm8Vnlud65WqqL .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-B5rm8Vnlud65WqqL :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>pivot\u9009\u62e9\u5bf9\u5feb\u6392\u590d\u6742\u5ea6\u7684\u5f71\u54cd<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u6bcf\u6b21\u7b49\u5206<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u6781\u5ea6\u4e0d\u5e73\u8861<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u671f\u671b\u5e73\u8861<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>pivot\u6070\u597d\u662f\u4e2d\u4f4d\u6570<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>T(n) &#061; 2T(n\/2) &#043; O(n)&#061; O(n log n) \u2713<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>pivot\u662f\u6700\u503c<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>T(n) &#061; T(n-1) &#043; O(n)&#061; O(n\u00b2) \u2717<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>pivot\u968f\u673a\u9009<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u671f\u671b\u6bd4\u8f83 \u2248 2n ln n&#061; O(n log n) \u2713<\/p>\n<p><\/span><\/p>\n<p>\u56fe6-2&#xff1a;pivot\u9009\u62e9\u8d28\u91cf\u76f4\u63a5\u51b3\u5b9a\u5feb\u6392\u6027\u80fd\u2014\u2014\u5e73\u8861\u5206\u533a\u5f97O(n log n)&#xff0c;\u6781\u4e0d\u5e73\u8861\u9000\u5316\u4e3aO(n\u00b2)<\/p>\n<h4>6.6 \u907f\u514d\u6700\u574f\u60c5\u51b5&#xff1a;Pivot \u4f18\u5316\u7b56\u7565<\/h4>\n<p>\u7531\u4e8e\u6700\u574f\u60c5\u51b5\u662fO(n\u00b2)&#xff0c;\u5de5\u7a0b\u4e2d\u5fc5\u987b\u4f18\u5316pivot\u9009\u62e9\u3002\u4e09\u79cd\u4e3b\u8981\u7b56\u7565&#xff1a;<\/p>\n<h5>6.6.1 \u968f\u673a\u9009 Pivot<\/h5>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token function\">partitionRandom<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u968f\u673a\u9009\u4e00\u4e2a\u5143\u7d20\u4e0earr[hi]\u4ea4\u6362&#xff0c;\u518d\u7528Lomuto\u65b9\u6848<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> randIdx <span class=\"token operator\">&#061;<\/span> lo <span class=\"token operator\">&#043;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">Random<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">nextInt<\/span><span class=\"token punctuation\">(<\/span>hi <span class=\"token operator\">&#8211;<\/span> lo <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> randIdx<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">partition<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u6807\u51c6Lomuto<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u968f\u673a\u5316\u540e&#xff0c;\u6ca1\u6709\u4efb\u4f55\u7279\u5b9a\u8f93\u5165\u80fd\u7a33\u5b9a\u89e6\u53d1\u6700\u574f\u60c5\u51b5\u3002\u671f\u671b\u590d\u6742\u5ea6\u4e3a O(n log n)&#xff0c;\u6700\u574f\u60c5\u51b5\u6982\u7387\u6781\u4f4e\u3002<\/p>\n<h5>6.6.2 \u4e09\u6570\u53d6\u4e2d&#xff08;Median-of-Three&#xff09;<\/h5>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token function\">medianOfThree<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> mid <span class=\"token operator\">&#061;<\/span> lo <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>hi <span class=\"token operator\">&#8211;<\/span> lo<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6392\u5e8farr[lo], arr[mid], arr[hi]&#xff0c;\u53d6\u4e2d\u4f4d\u6570\u653e\u5230arr[hi]<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>lo<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>mid<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>lo<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>hi<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>mid<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>hi<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6b64\u65f6arr[mid] \u2264 arr[hi]&#xff0c;arr[lo] \u2264 arr[hi]<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u628a\u4e2d\u4f4d\u6570arr[mid]\u6362\u5230arr[hi]\u4f5cpivot<\/span><br \/>\n    <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">partition<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u4e09\u6570\u53d6\u4e2d\u5bf9\u5df2\u6709\u5e8f\/\u9006\u5e8f\u8f93\u5165\u7279\u522b\u6709\u6548\u2014\u2014\u8fd9\u4e24\u79cd\u8f93\u5165\u662f\u6734\u7d20\u5feb\u6392\u7684\u6700\u574f\u60c5\u51b5&#xff0c;\u4f46\u4e09\u6570\u53d6\u4e2d\u80fd\u76f4\u63a5\u9009\u4e2d\u4e2d\u4f4d\u6570&#xff0c;\u53d8\u6210\u6700\u597d\u60c5\u51b5\u3002<\/p>\n<h5>6.6.3 IntroSort&#xff08;\u5185\u7701\u6392\u5e8f&#xff09;<\/h5>\n<p>C&#043;&#043; STL \u4f7f\u7528\u7684\u65b9\u6cd5&#xff1a;\u5feb\u6392\u9012\u5f52\u6df1\u5ea6\u8d85\u8fc7 2log\u2082n \u65f6\u5207\u6362\u4e3a\u5806\u6392&#xff0c;\u4fdd\u8bc1\u6700\u574fO(n log n)\u3002\u8fd9\u5c06\u5728\u7b2c9\u7ae0\u8be6\u7ec6\u8bb2\u89e3\u3002<\/p>\n<h4>6.7 \u5feb\u6392\u4e3a\u4ec0\u4e48\u4e0d\u7a33\u5b9a<\/h4>\n<p>\u5feb\u901f\u6392\u5e8f\u662f\u4e0d\u7a33\u5b9a\u7684\u3002<\/p>\n<p>\u4e0d\u7a33\u5b9a\u7684\u539f\u56e0\u662f partition \u4e2d\u7684\u4ea4\u6362\u64cd\u4f5c\u53ef\u80fd\u8de8\u8d8a\u76f8\u7b49\u5143\u7d20\u3002\u4ee5 Lomuto \u65b9\u6848\u4e3a\u4f8b&#xff1a;<\/p>\n<p>\u6570\u7ec4 [3a, 3b, 2]&#xff0c;pivot &#061; 2&#xff08;arr[2]&#xff09;&#xff1a;<\/p>\n<p>j&#061;0: arr[0]&#061;3 &gt; 2, \u4e0d\u52a8, i&#061;-1<br \/>\nj&#061;1: arr[1]&#061;3 &gt; 2, \u4e0d\u52a8, i&#061;-1<br \/>\n\u626b\u63cf\u5b8c\u6bd5: swap(arr[0], arr[2]) \u2192 [2, 3b, 3a]<\/p>\n<p>3a \u539f\u6765\u5728 3b \u524d\u9762&#xff0c;\u4ea4\u6362\u540e 3a \u8dd1\u5230\u4e86 3b \u540e\u9762\u3002Hoare \u65b9\u6848\u540c\u6837\u5b58\u5728\u8fd9\u4e2a\u95ee\u9898\u2014\u2014\u53cc\u6307\u9488\u4ea4\u6362\u65f6\u53ef\u80fd\u8de8\u8fc7\u76f8\u7b49\u5143\u7d20\u3002<\/p>\n<p>\u8981\u4f7f\u5feb\u6392\u7a33\u5b9a&#xff0c;\u9700\u8981 O(n) \u989d\u5916\u7a7a\u95f4&#xff08;\u7528\u8f85\u52a9\u6570\u7ec4\u505a\u7a33\u5b9a\u5206\u533a&#xff09;&#xff0c;\u4f46\u8fd9\u6837\u5c31\u5931\u53bb\u4e86\u5feb\u6392\u539f\u5730\u6392\u5e8f\u7684\u4f18\u52bf&#xff0c;\u4e0d\u5982\u76f4\u63a5\u7528\u5f52\u5e76\u6392\u5e8f\u3002<\/p>\n<h4>6.8 \u4e3a\u4ec0\u4e48\u5feb\u6392\u5b9e\u9645\u6700\u5feb<\/h4>\n<p>\u8fd9\u662f\u672c\u6587\u6700\u6838\u5fc3\u7684\u95ee\u9898\u3002\u5feb\u6392\u7684\u5e73\u5747\u6bd4\u8f83\u6b21\u6570&#xff08;1.39 n log\u2082 n&#xff09;\u6bd4\u5f52\u5e76&#xff08;n log\u2082 n&#xff09;\u8fd8\u591a&#xff0c;\u4e3a\u4ec0\u4e48\u5b9e\u9645\u8fd0\u884c\u66f4\u5feb&#xff1f;<\/p>\n<p>\u539f\u56e01&#xff1a;\u7f13\u5b58\u53cb\u597d&#xff08;\u6700\u91cd\u8981&#xff09;\u3002<\/p>\n<p>\u5feb\u6392\u7684 partition \u662f\u987a\u5e8f\u626b\u63cf\u6570\u7ec4&#xff08;j \u4ece lo \u5230 hi&#xff09;&#xff0c;CPU \u7f13\u5b58\u9884\u53d6\u547d\u4e2d\u7387\u9ad8\u3002\u5f52\u5e76\u6392\u5e8f\u7684 merge \u9700\u8981\u540c\u65f6\u8bfb\u4e24\u4e2a\u5b50\u6570\u7ec4\u5e76\u5199\u56de&#xff0c;\u8bbf\u95ee\u6a21\u5f0f\u8df3\u8dc3&#xff0c;\u7f13\u5b58\u4e0d\u53cb\u597d\u3002\u5728\u73b0\u4ee3CPU\u4e0a&#xff0c;\u7f13\u5b58\u547d\u4e2d\u7387\u5bf9\u6027\u80fd\u7684\u5f71\u54cd\u8fdc\u5927\u4e8e\u6bd4\u8f83\u6b21\u6570\u7684\u7ec6\u5fae\u5dee\u5f02\u3002<\/p>\n<p>\u539f\u56e02&#xff1a;\u5e38\u6570\u56e0\u5b50\u5c0f\u3002<\/p>\n<p>partition \u5185\u90e8\u53ea\u6709\u4e00\u6b21\u6bd4\u8f83\u548c\u4e00\u6b21\u81ea\u589e&#xff08;if arr[j] &lt;&#061; pivot &#043; i&#043;&#043;&#xff09;&#xff0c;\u975e\u5e38\u7cbe\u7b80\u3002\u5f52\u5e76\u7684 merge \u9700\u8981\u4e24\u6b21\u6bd4\u8f83&#xff08;temp[i] &lt;&#061; temp[j] \u52a0\u4e0a\u8fb9\u754c\u68c0\u67e5&#xff09;\u548c\u6570\u7ec4\u62f7\u8d1d&#xff08;System.arraycopy&#xff09;&#xff0c;\u5f00\u9500\u66f4\u5927\u3002<\/p>\n<p>\u539f\u56e03&#xff1a;\u539f\u5730\u6392\u5e8f&#xff0c;\u4e0d\u5206\u914d\u989d\u5916\u7a7a\u95f4\u3002<\/p>\n<p>\u5f52\u5e76\u6392\u5e8f\u9700\u8981 O(n) \u8f85\u52a9\u6570\u7ec4&#xff0c;\u5206\u914d\u548c\u91ca\u653e\u5185\u5b58\u6709\u5f00\u9500\u3002\u5feb\u6392\u539f\u5730\u6392\u5e8f&#xff0c;\u53ea\u6709\u9012\u5f52\u6808 O(log n) \u7684\u7a7a\u95f4\u3002<\/p>\n<p>\u539f\u56e04&#xff1a;\u5206\u533a\u540e\u5b50\u95ee\u9898\u53ef\u80fd\u5f88\u5c0f\u3002<\/p>\n<p>\u5feb\u6392\u5728\u5206\u533a\u540e&#xff0c;\u5982\u679cpivot\u9009\u5f97\u597d&#xff0c;\u5f88\u591a\u5143\u7d20\u4e00\u6b21\u5c31\u5230\u4f4d\u4e86\u3002\u52a0\u4e0a\u5c0f\u533a\u95f4\u5207\u6362\u63d2\u5165\u6392\u5e8f&#xff0c;\u5b9e\u9645\u9012\u5f52\u6df1\u5ea6\u6bd4\u7406\u8bba\u503c\u6d45\u3002<\/p>\n<p>  #mermaid-svg-b1WHpM2vcnZ9uniS{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-b1WHpM2vcnZ9uniS .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-b1WHpM2vcnZ9uniS .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-b1WHpM2vcnZ9uniS .error-icon{fill:#552222;}#mermaid-svg-b1WHpM2vcnZ9uniS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-b1WHpM2vcnZ9uniS .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-b1WHpM2vcnZ9uniS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-b1WHpM2vcnZ9uniS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-b1WHpM2vcnZ9uniS .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-b1WHpM2vcnZ9uniS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-b1WHpM2vcnZ9uniS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-b1WHpM2vcnZ9uniS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-b1WHpM2vcnZ9uniS .marker.cross{stroke:#333333;}#mermaid-svg-b1WHpM2vcnZ9uniS svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-b1WHpM2vcnZ9uniS p{margin:0;}#mermaid-svg-b1WHpM2vcnZ9uniS .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-b1WHpM2vcnZ9uniS .cluster-label text{fill:#333;}#mermaid-svg-b1WHpM2vcnZ9uniS .cluster-label span{color:#333;}#mermaid-svg-b1WHpM2vcnZ9uniS .cluster-label span p{background-color:transparent;}#mermaid-svg-b1WHpM2vcnZ9uniS .label text,#mermaid-svg-b1WHpM2vcnZ9uniS span{fill:#333;color:#333;}#mermaid-svg-b1WHpM2vcnZ9uniS .node rect,#mermaid-svg-b1WHpM2vcnZ9uniS .node circle,#mermaid-svg-b1WHpM2vcnZ9uniS .node ellipse,#mermaid-svg-b1WHpM2vcnZ9uniS .node polygon,#mermaid-svg-b1WHpM2vcnZ9uniS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-b1WHpM2vcnZ9uniS .rough-node .label text,#mermaid-svg-b1WHpM2vcnZ9uniS .node .label text,#mermaid-svg-b1WHpM2vcnZ9uniS .image-shape .label,#mermaid-svg-b1WHpM2vcnZ9uniS .icon-shape .label{text-anchor:middle;}#mermaid-svg-b1WHpM2vcnZ9uniS .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-b1WHpM2vcnZ9uniS .rough-node .label,#mermaid-svg-b1WHpM2vcnZ9uniS .node .label,#mermaid-svg-b1WHpM2vcnZ9uniS .image-shape .label,#mermaid-svg-b1WHpM2vcnZ9uniS .icon-shape .label{text-align:center;}#mermaid-svg-b1WHpM2vcnZ9uniS .node.clickable{cursor:pointer;}#mermaid-svg-b1WHpM2vcnZ9uniS .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-b1WHpM2vcnZ9uniS .arrowheadPath{fill:#333333;}#mermaid-svg-b1WHpM2vcnZ9uniS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-b1WHpM2vcnZ9uniS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-b1WHpM2vcnZ9uniS .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-b1WHpM2vcnZ9uniS .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-b1WHpM2vcnZ9uniS .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-b1WHpM2vcnZ9uniS .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-b1WHpM2vcnZ9uniS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-b1WHpM2vcnZ9uniS .cluster text{fill:#333;}#mermaid-svg-b1WHpM2vcnZ9uniS .cluster span{color:#333;}#mermaid-svg-b1WHpM2vcnZ9uniS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-b1WHpM2vcnZ9uniS .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-b1WHpM2vcnZ9uniS rect.text{fill:none;stroke-width:0;}#mermaid-svg-b1WHpM2vcnZ9uniS .icon-shape,#mermaid-svg-b1WHpM2vcnZ9uniS .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-b1WHpM2vcnZ9uniS .icon-shape p,#mermaid-svg-b1WHpM2vcnZ9uniS .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-b1WHpM2vcnZ9uniS .icon-shape .label rect,#mermaid-svg-b1WHpM2vcnZ9uniS .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-b1WHpM2vcnZ9uniS .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-b1WHpM2vcnZ9uniS .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-b1WHpM2vcnZ9uniS :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5feb\u6392\u5b9e\u9645\u6700\u5feb\u7684\u539f\u56e0<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5feb\u6392 vs \u5f52\u5e76\u6bd4\u8f83\u6b21\u6570: 1.39n\u00b7log\u2082n vs n\u00b7log\u2082n\u5feb\u6392\u591a39%&#xff0c;\u4f46\u5b9e\u9645\u66f4\u5feb<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u539f\u56e01: \u7f13\u5b58\u53cb\u597d\u987a\u5e8f\u626b\u63cf vs \u8df3\u8dc3\u8bbf\u95ee<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u539f\u56e02: \u5e38\u6570\u56e0\u5b50\u5c0fpartition\u6bd4merge\u7b80\u5355<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u539f\u56e03: \u539f\u5730\u6392\u5e8f\u65e0O(n)\u8f85\u52a9\u6570\u7ec4\u5206\u914d<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u539f\u56e04: \u5206\u533a\u5373\u5b9a\u4f4d\u5f88\u591a\u5143\u7d20\u4e00\u6b65\u5230\u4f4d<\/p>\n<p><\/span><\/p>\n<p>\u56fe6-3&#xff1a;\u5feb\u6392\u867d\u7136\u6bd4\u8f83\u6b21\u6570\u6bd4\u5f52\u5e76\u591a39%&#xff0c;\u4f46\u51ed\u501f\u7f13\u5b58\u53cb\u597d\u548c\u4f4e\u5e38\u6570\u56e0\u5b50\u5b9e\u9645\u66f4\u5feb<\/p>\n<h4>6.9 \u975e\u9012\u5f52\u5b9e\u73b0<\/h4>\n<p>\u5feb\u6392\u4e5f\u53ef\u4ee5\u7528\u6808\u6a21\u62df\u9012\u5f52&#xff0c;\u907f\u514d\u9012\u5f52\u6808\u6ea2\u51fa&#xff1a;<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">quickSortIterative<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">Deque<\/span><span class=\"token operator\">&lt;<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token operator\">&gt;<\/span> stack <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayDeque<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    stack<span class=\"token punctuation\">.<\/span><span class=\"token function\">push<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">{<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> arr<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token operator\">!<\/span>stack<span class=\"token punctuation\">.<\/span><span class=\"token function\">isEmpty<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> range <span class=\"token operator\">&#061;<\/span> stack<span class=\"token punctuation\">.<\/span><span class=\"token function\">pop<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> lo <span class=\"token operator\">&#061;<\/span> range<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> hi <span class=\"token operator\">&#061;<\/span> range<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>lo <span class=\"token operator\">&gt;&#061;<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">continue<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> p <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">partition<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token comment\">\/\/ \u5148\u5904\u7406\u5927\u533a\u95f4&#xff08;\u7528\u5c3e\u9012\u5f52\u4f18\u5316\u6808\u6df1\u5ea6&#xff09;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>p <span class=\"token operator\">&#8211;<\/span> lo <span class=\"token operator\">&gt;<\/span> hi <span class=\"token operator\">&#8211;<\/span> p<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            stack<span class=\"token punctuation\">.<\/span><span class=\"token function\">push<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">{<\/span>lo<span class=\"token punctuation\">,<\/span> p <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            stack<span class=\"token punctuation\">.<\/span><span class=\"token function\">push<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">{<\/span>p <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            stack<span class=\"token punctuation\">.<\/span><span class=\"token function\">push<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">{<\/span>p <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            stack<span class=\"token punctuation\">.<\/span><span class=\"token function\">push<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">{<\/span>lo<span class=\"token punctuation\">,<\/span> p <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u5de5\u7a0b\u4e2d\u7684\u4f18\u5316\u6280\u5de7&#xff1a;\u5c3e\u9012\u5f52\u6d88\u9664\u3002\u59cb\u7ec8\u5148\u5904\u7406\u8f83\u5c0f\u7684\u5b50\u533a\u95f4&#xff0c;\u8f83\u5927\u7684\u5b50\u533a\u95f4\u7528\u5faa\u73af\u5904\u7406&#xff0c;\u4fdd\u8bc1\u6808\u6df1\u5ea6\u4e0d\u8d85\u8fc7 O(log n)&#xff1a;<\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">quickSortTailOpt<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>lo <span class=\"token operator\">&lt;<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> p <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">partition<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>p <span class=\"token operator\">&#8211;<\/span> lo <span class=\"token operator\">&lt;<\/span> hi <span class=\"token operator\">&#8211;<\/span> p<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">quickSortTailOpt<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> p <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u9012\u5f52\u5904\u7406\u5c0f\u534a<\/span><br \/>\n            lo <span class=\"token operator\">&#061;<\/span> p <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5faa\u73af\u5904\u7406\u5927\u534a&#xff08;\u5c3e\u9012\u5f52\u6d88\u9664&#xff09;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">quickSortTailOpt<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> p <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            hi <span class=\"token operator\">&#061;<\/span> p <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u8fd9\u6837\u6808\u6df1\u5ea6\u6700\u591a O(log n)&#xff0c;\u5373\u4f7f\u6700\u574f\u60c5\u51b5\u4e0b\u4e5f\u4e0d\u4f1a\u6808\u6ea2\u51fa\u3002<\/p>\n<hr \/>\n<h3>\u7b2c7\u7ae0 \u5806\u6392\u5e8f&#xff1a;\u4f18\u5148\u961f\u5217\u7684\u6392\u5e8f<\/h3>\n<h4>7.1 \u6838\u5fc3\u601d\u60f3<\/h4>\n<p>\u5806\u6392\u5e8f\u5229\u7528**\u5806&#xff08;Heap&#xff09;**\u8fd9\u79cd\u6570\u636e\u7ed3\u6784\u6765\u6392\u5e8f&#xff1a;\u5148\u5efa\u4e00\u4e2a\u5927\u9876\u5806&#xff0c;\u7136\u540e\u53cd\u590d\u53d6\u51fa\u5806\u9876&#xff08;\u6700\u5927\u503c&#xff09;\u653e\u5230\u6570\u7ec4\u672b\u5c3e&#xff0c;\u518d\u8c03\u6574\u5806\u3002<\/p>\n<p>\u7406\u89e3\u5806\u6392\u5e8f\u7684\u524d\u63d0\u662f\u7406\u89e3\u5806\u3002\u5806\u662f\u4e00\u68f5\u5b8c\u5168\u4e8c\u53c9\u6811&#xff0c;\u7528\u6570\u7ec4\u5b58\u50a8&#xff08;\u4e0d\u9700\u8981\u6307\u9488&#xff09;&#xff0c;\u6ee1\u8db3&#xff1a;<\/p>\n<ul>\n<li>\u5927\u9876\u5806&#xff1a;\u6bcf\u4e2a\u8282\u70b9\u7684\u503c \u2265 \u5176\u5b50\u8282\u70b9\u7684\u503c<\/li>\n<li>\u5c0f\u9876\u5806&#xff1a;\u6bcf\u4e2a\u8282\u70b9\u7684\u503c \u2264 \u5176\u5b50\u8282\u70b9\u7684\u503c<\/li>\n<\/ul>\n<p>\u6570\u7ec4\u4e0e\u6811\u7684\u6620\u5c04\u5173\u7cfb&#xff1a;\u5bf9\u4e8e\u8282\u70b9 i&#xff0c;\u5de6\u5b50\u8282\u70b9 2i&#043;1&#xff0c;\u53f3\u5b50\u8282\u70b9 2i&#043;2&#xff0c;\u7236\u8282\u70b9 (i-1)\/2\u3002<\/p>\n<p>  #mermaid-svg-06XsuJFNbdWUQbPL{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-06XsuJFNbdWUQbPL .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-06XsuJFNbdWUQbPL .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-06XsuJFNbdWUQbPL .error-icon{fill:#552222;}#mermaid-svg-06XsuJFNbdWUQbPL .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-06XsuJFNbdWUQbPL .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-06XsuJFNbdWUQbPL .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-06XsuJFNbdWUQbPL .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-06XsuJFNbdWUQbPL .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-06XsuJFNbdWUQbPL .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-06XsuJFNbdWUQbPL .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-06XsuJFNbdWUQbPL .marker{fill:#333333;stroke:#333333;}#mermaid-svg-06XsuJFNbdWUQbPL .marker.cross{stroke:#333333;}#mermaid-svg-06XsuJFNbdWUQbPL svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-06XsuJFNbdWUQbPL p{margin:0;}#mermaid-svg-06XsuJFNbdWUQbPL .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-06XsuJFNbdWUQbPL .cluster-label text{fill:#333;}#mermaid-svg-06XsuJFNbdWUQbPL .cluster-label span{color:#333;}#mermaid-svg-06XsuJFNbdWUQbPL .cluster-label span p{background-color:transparent;}#mermaid-svg-06XsuJFNbdWUQbPL .label text,#mermaid-svg-06XsuJFNbdWUQbPL span{fill:#333;color:#333;}#mermaid-svg-06XsuJFNbdWUQbPL .node rect,#mermaid-svg-06XsuJFNbdWUQbPL .node circle,#mermaid-svg-06XsuJFNbdWUQbPL .node ellipse,#mermaid-svg-06XsuJFNbdWUQbPL .node polygon,#mermaid-svg-06XsuJFNbdWUQbPL .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-06XsuJFNbdWUQbPL .rough-node .label text,#mermaid-svg-06XsuJFNbdWUQbPL .node .label text,#mermaid-svg-06XsuJFNbdWUQbPL .image-shape .label,#mermaid-svg-06XsuJFNbdWUQbPL .icon-shape .label{text-anchor:middle;}#mermaid-svg-06XsuJFNbdWUQbPL .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-06XsuJFNbdWUQbPL .rough-node .label,#mermaid-svg-06XsuJFNbdWUQbPL .node .label,#mermaid-svg-06XsuJFNbdWUQbPL .image-shape .label,#mermaid-svg-06XsuJFNbdWUQbPL .icon-shape .label{text-align:center;}#mermaid-svg-06XsuJFNbdWUQbPL .node.clickable{cursor:pointer;}#mermaid-svg-06XsuJFNbdWUQbPL .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-06XsuJFNbdWUQbPL .arrowheadPath{fill:#333333;}#mermaid-svg-06XsuJFNbdWUQbPL .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-06XsuJFNbdWUQbPL .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-06XsuJFNbdWUQbPL .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-06XsuJFNbdWUQbPL .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-06XsuJFNbdWUQbPL .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-06XsuJFNbdWUQbPL .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-06XsuJFNbdWUQbPL .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-06XsuJFNbdWUQbPL .cluster text{fill:#333;}#mermaid-svg-06XsuJFNbdWUQbPL .cluster span{color:#333;}#mermaid-svg-06XsuJFNbdWUQbPL div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-06XsuJFNbdWUQbPL .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-06XsuJFNbdWUQbPL rect.text{fill:none;stroke-width:0;}#mermaid-svg-06XsuJFNbdWUQbPL .icon-shape,#mermaid-svg-06XsuJFNbdWUQbPL .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-06XsuJFNbdWUQbPL .icon-shape p,#mermaid-svg-06XsuJFNbdWUQbPL .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-06XsuJFNbdWUQbPL .icon-shape .label rect,#mermaid-svg-06XsuJFNbdWUQbPL .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-06XsuJFNbdWUQbPL .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-06XsuJFNbdWUQbPL .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-06XsuJFNbdWUQbPL :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5927\u9876\u5806\u7684\u6570\u7ec4\u8868\u793a<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6570\u7ec4\u89c6\u56fe<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6811\u5f62\u89c6\u56fe<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7d22\u5f15: 0 1 2 3 4 5 6<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>50<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>30<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>40<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>10<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>20<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>35<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>15<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u503c: 50 30 40 10 20 35 15<\/p>\n<p><\/span><\/p>\n<p>\u56fe7-1&#xff1a;\u5927\u9876\u5806\u7684\u6811\u5f62\u4e0e\u6570\u7ec4\u6620\u5c04\u2014\u2014\u8282\u70b9i\u7684\u5de6\u5b50\u4e3a2i&#043;1&#xff0c;\u53f3\u5b50\u4e3a2i&#043;2&#xff0c;\u7236\u4e3a(i-1)\/2<\/p>\n<h4>7.2 \u5806\u7684\u6838\u5fc3\u64cd\u4f5c&#xff1a;Sift Down<\/h4>\n<p>\u5806\u6392\u5e8f\u7684\u6838\u5fc3\u662f sift down&#xff08;\u4e0b\u6c89&#xff09; \u64cd\u4f5c&#xff1a;\u5c06\u4e00\u4e2a\u53ef\u80fd\u8fdd\u53cd\u5806\u6027\u8d28\u7684\u8282\u70b9\u5411\u4e0b\u8c03\u6574\u5230\u6b63\u786e\u4f4d\u7f6e\u3002<\/p>\n<p>  #mermaid-svg-modNDZ3VvJdvgByy{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-modNDZ3VvJdvgByy .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-modNDZ3VvJdvgByy .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-modNDZ3VvJdvgByy .error-icon{fill:#552222;}#mermaid-svg-modNDZ3VvJdvgByy .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-modNDZ3VvJdvgByy .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-modNDZ3VvJdvgByy .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-modNDZ3VvJdvgByy .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-modNDZ3VvJdvgByy .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-modNDZ3VvJdvgByy .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-modNDZ3VvJdvgByy .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-modNDZ3VvJdvgByy .marker{fill:#333333;stroke:#333333;}#mermaid-svg-modNDZ3VvJdvgByy .marker.cross{stroke:#333333;}#mermaid-svg-modNDZ3VvJdvgByy svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-modNDZ3VvJdvgByy p{margin:0;}#mermaid-svg-modNDZ3VvJdvgByy .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-modNDZ3VvJdvgByy .cluster-label text{fill:#333;}#mermaid-svg-modNDZ3VvJdvgByy .cluster-label span{color:#333;}#mermaid-svg-modNDZ3VvJdvgByy .cluster-label span p{background-color:transparent;}#mermaid-svg-modNDZ3VvJdvgByy .label text,#mermaid-svg-modNDZ3VvJdvgByy span{fill:#333;color:#333;}#mermaid-svg-modNDZ3VvJdvgByy .node rect,#mermaid-svg-modNDZ3VvJdvgByy .node circle,#mermaid-svg-modNDZ3VvJdvgByy .node ellipse,#mermaid-svg-modNDZ3VvJdvgByy .node polygon,#mermaid-svg-modNDZ3VvJdvgByy .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-modNDZ3VvJdvgByy .rough-node .label text,#mermaid-svg-modNDZ3VvJdvgByy .node .label text,#mermaid-svg-modNDZ3VvJdvgByy .image-shape .label,#mermaid-svg-modNDZ3VvJdvgByy .icon-shape .label{text-anchor:middle;}#mermaid-svg-modNDZ3VvJdvgByy .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-modNDZ3VvJdvgByy .rough-node .label,#mermaid-svg-modNDZ3VvJdvgByy .node .label,#mermaid-svg-modNDZ3VvJdvgByy .image-shape .label,#mermaid-svg-modNDZ3VvJdvgByy .icon-shape .label{text-align:center;}#mermaid-svg-modNDZ3VvJdvgByy .node.clickable{cursor:pointer;}#mermaid-svg-modNDZ3VvJdvgByy .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-modNDZ3VvJdvgByy .arrowheadPath{fill:#333333;}#mermaid-svg-modNDZ3VvJdvgByy .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-modNDZ3VvJdvgByy .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-modNDZ3VvJdvgByy .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-modNDZ3VvJdvgByy .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-modNDZ3VvJdvgByy .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-modNDZ3VvJdvgByy .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-modNDZ3VvJdvgByy .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-modNDZ3VvJdvgByy .cluster text{fill:#333;}#mermaid-svg-modNDZ3VvJdvgByy .cluster span{color:#333;}#mermaid-svg-modNDZ3VvJdvgByy div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-modNDZ3VvJdvgByy .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-modNDZ3VvJdvgByy rect.text{fill:none;stroke-width:0;}#mermaid-svg-modNDZ3VvJdvgByy .icon-shape,#mermaid-svg-modNDZ3VvJdvgByy .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-modNDZ3VvJdvgByy .icon-shape p,#mermaid-svg-modNDZ3VvJdvgByy .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-modNDZ3VvJdvgByy .icon-shape .label rect,#mermaid-svg-modNDZ3VvJdvgByy .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-modNDZ3VvJdvgByy .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-modNDZ3VvJdvgByy .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-modNDZ3VvJdvgByy :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>sift down \u793a\u4f8b&#xff1a;\u8c03\u6574\u8282\u70b920&#xff08;\u7d22\u5f154&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5927\u9876\u5806\u88ab\u7834\u574f: \u723620 &lt; \u5b5035 \u9700\u8981\u4e0b\u6c89<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>20\u4e0e\u8f83\u5927\u7684\u5b50\u8282\u70b935\u6bd4\u8f8320&lt;35, \u4ea4\u6362<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>20\u5728\u539f35\u7684\u4f4d\u7f6e(\u7d22\u5f155)\u65e0\u5b50\u8282\u70b9, \u4e0b\u6c89\u7ed3\u675f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8c03\u6574\u540e: 50\u219230\u219240\u219210\u219235\u219220\u219215 \u6062\u590d\u5927\u9876\u5806\u6027\u8d28<\/p>\n<p><\/span><\/p>\n<p>\u56fe7-2&#xff1a;sift down \u64cd\u4f5c\u2014\u2014\u5c06\u8fdd\u53cd\u5806\u6027\u8d28\u7684\u8282\u70b9\u4e0e\u5176\u8f83\u5927\u7684\u5b50\u8282\u70b9\u4ea4\u6362&#xff0c;\u76f4\u5230\u6062\u590d\u5806\u6027\u8d28\u6216\u5230\u8fbe\u53f6\u5b50<\/p>\n<p><span class=\"token comment\">\/\/ \u5c06arr[i]\u4e0b\u6c89\u5230\u6b63\u786e\u4f4d\u7f6e&#xff0c;\u5806\u8303\u56f4[0, heapSize)<\/span><br \/>\n<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">siftDown<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> i<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> heapSize<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token boolean\">true<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> left <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">*<\/span> i <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>   <span class=\"token comment\">\/\/ \u5de6\u5b50<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> right <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">*<\/span> i <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u53f3\u5b50<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> largest <span class=\"token operator\">&#061;<\/span> i<span class=\"token punctuation\">;<\/span>        <span class=\"token comment\">\/\/ \u5047\u8bbe\u81ea\u5df1\u6700\u5927<\/span><\/p>\n<p>        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>left <span class=\"token operator\">&lt;<\/span> heapSize <span class=\"token operator\">&amp;&amp;<\/span> arr<span class=\"token punctuation\">[<\/span>left<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>largest<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            largest <span class=\"token operator\">&#061;<\/span> left<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>right <span class=\"token operator\">&lt;<\/span> heapSize <span class=\"token operator\">&amp;&amp;<\/span> arr<span class=\"token punctuation\">[<\/span>right<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>largest<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            largest <span class=\"token operator\">&#061;<\/span> right<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>largest <span class=\"token operator\">&#061;&#061;<\/span> i<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">break<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u81ea\u5df1\u5df2\u7ecf\u6700\u5927&#xff0c;\u7ed3\u675f<\/span><\/p>\n<p>        <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">,<\/span> largest<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u4e0e\u8f83\u5927\u7684\u5b50\u8282\u70b9\u4ea4\u6362<\/span><br \/>\n        i <span class=\"token operator\">&#061;<\/span> largest<span class=\"token punctuation\">;<\/span>            <span class=\"token comment\">\/\/ \u7ee7\u7eed\u4e0b\u6c89<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>7.3 \u5efa\u5806\u8fc7\u7a0b<\/h4>\n<p>\u5806\u6392\u5e8f\u7b2c\u4e00\u6b65\u662f\u5efa\u5806\u3002\u4ece\u6700\u540e\u4e00\u4e2a\u975e\u53f6\u5b50\u8282\u70b9\u5f00\u59cb&#xff0c;\u4ece\u53f3\u5411\u5de6\u3001\u4ece\u4e0b\u5411\u4e0a\u9010\u4e2a\u6267\u884c sift down\u3002<\/p>\n<p>\u4e3a\u4ec0\u4e48\u4ece\u6700\u540e\u4e00\u4e2a\u975e\u53f6\u5b50\u8282\u70b9\u5f00\u59cb&#xff1a;\u53f6\u5b50\u8282\u70b9\u6ca1\u6709\u5b50\u8282\u70b9&#xff0c;\u5929\u7136\u6ee1\u8db3\u5806\u6027\u8d28\u3002\u4ece\u6700\u540e\u4e00\u4e2a\u975e\u53f6\u5b50\u8282\u70b9&#xff08;\u7d22\u5f15 (n\/2) &#8211; 1&#xff09;\u5f00\u59cb&#xff0c;\u4fdd\u8bc1\u5904\u7406\u6bcf\u4e2a\u8282\u70b9\u65f6\u5176\u5b50\u6811\u5df2\u7ecf\u662f\u5408\u6cd5\u7684\u5806\u3002<\/p>\n<p>  #mermaid-svg-7VIXCfPvjhITrBZq{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-7VIXCfPvjhITrBZq .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7VIXCfPvjhITrBZq .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7VIXCfPvjhITrBZq .error-icon{fill:#552222;}#mermaid-svg-7VIXCfPvjhITrBZq .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7VIXCfPvjhITrBZq .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7VIXCfPvjhITrBZq .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7VIXCfPvjhITrBZq .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7VIXCfPvjhITrBZq .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7VIXCfPvjhITrBZq .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7VIXCfPvjhITrBZq .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7VIXCfPvjhITrBZq .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7VIXCfPvjhITrBZq .marker.cross{stroke:#333333;}#mermaid-svg-7VIXCfPvjhITrBZq svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7VIXCfPvjhITrBZq p{margin:0;}#mermaid-svg-7VIXCfPvjhITrBZq .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-7VIXCfPvjhITrBZq .cluster-label text{fill:#333;}#mermaid-svg-7VIXCfPvjhITrBZq .cluster-label span{color:#333;}#mermaid-svg-7VIXCfPvjhITrBZq .cluster-label span p{background-color:transparent;}#mermaid-svg-7VIXCfPvjhITrBZq .label text,#mermaid-svg-7VIXCfPvjhITrBZq span{fill:#333;color:#333;}#mermaid-svg-7VIXCfPvjhITrBZq .node rect,#mermaid-svg-7VIXCfPvjhITrBZq .node circle,#mermaid-svg-7VIXCfPvjhITrBZq .node ellipse,#mermaid-svg-7VIXCfPvjhITrBZq .node polygon,#mermaid-svg-7VIXCfPvjhITrBZq .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7VIXCfPvjhITrBZq .rough-node .label text,#mermaid-svg-7VIXCfPvjhITrBZq .node .label text,#mermaid-svg-7VIXCfPvjhITrBZq .image-shape .label,#mermaid-svg-7VIXCfPvjhITrBZq .icon-shape .label{text-anchor:middle;}#mermaid-svg-7VIXCfPvjhITrBZq .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-7VIXCfPvjhITrBZq .rough-node .label,#mermaid-svg-7VIXCfPvjhITrBZq .node .label,#mermaid-svg-7VIXCfPvjhITrBZq .image-shape .label,#mermaid-svg-7VIXCfPvjhITrBZq .icon-shape .label{text-align:center;}#mermaid-svg-7VIXCfPvjhITrBZq .node.clickable{cursor:pointer;}#mermaid-svg-7VIXCfPvjhITrBZq .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-7VIXCfPvjhITrBZq .arrowheadPath{fill:#333333;}#mermaid-svg-7VIXCfPvjhITrBZq .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7VIXCfPvjhITrBZq .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7VIXCfPvjhITrBZq .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7VIXCfPvjhITrBZq .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-7VIXCfPvjhITrBZq .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7VIXCfPvjhITrBZq .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-7VIXCfPvjhITrBZq .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7VIXCfPvjhITrBZq .cluster text{fill:#333;}#mermaid-svg-7VIXCfPvjhITrBZq .cluster span{color:#333;}#mermaid-svg-7VIXCfPvjhITrBZq div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7VIXCfPvjhITrBZq .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-7VIXCfPvjhITrBZq rect.text{fill:none;stroke-width:0;}#mermaid-svg-7VIXCfPvjhITrBZq .icon-shape,#mermaid-svg-7VIXCfPvjhITrBZq .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7VIXCfPvjhITrBZq .icon-shape p,#mermaid-svg-7VIXCfPvjhITrBZq .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-7VIXCfPvjhITrBZq .icon-shape .label rect,#mermaid-svg-7VIXCfPvjhITrBZq .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7VIXCfPvjhITrBZq .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-7VIXCfPvjhITrBZq .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-7VIXCfPvjhITrBZq :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5efa\u5806\u8fc7\u7a0b arr&#061;[4,10,3,5,1,2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u521d\u59cb\u6570\u7ec4: [4,10,3,5,1,2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ece\u7d22\u5f152(\u8282\u70b93)\u5f00\u59cb3\u7684\u5b50\u8282\u70b9\u662f2(\u5de6),\u65e0(\u53f3)3&gt;2, \u4e0d\u7528\u8c03\u6574<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7d22\u5f151(\u8282\u70b910)\u5b50\u8282\u70b95\u548c1, 10&gt;5\u4e1410&gt;1, \u4e0d\u7528\u8c03\u6574<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7d22\u5f150(\u8282\u70b94)\u5b50\u8282\u70b910\u548c3, 4&lt;10, \u4ea4\u6362\u2192[10,4,3,5,1,2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>4\u7ee7\u7eed\u4e0b\u6c894\u7684\u5b50\u8282\u70b95\u548c1, 4&lt;5, \u4ea4\u6362\u2192[10,5,3,4,1,2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5efa\u5806\u5b8c\u6210: [10,5,3,4,1,2]<\/p>\n<p><\/span><\/p>\n<p>\u56fe7-3&#xff1a;\u5efa\u5806\u8fc7\u7a0b\u2014\u2014\u4ece\u6700\u540e\u4e00\u4e2a\u975e\u53f6\u5b50\u8282\u70b9\u5411\u524d\u9010\u4e2asift down&#xff0c;\u65f6\u95f4\u590d\u6742\u5ea6O(n)<\/p>\n<p><span class=\"token comment\">\/\/ \u5efa\u5927\u9876\u5806<\/span><br \/>\n<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">buildHeap<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u4ece\u6700\u540e\u4e00\u4e2a\u975e\u53f6\u5b50\u8282\u70b9\u5f00\u59cb<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> n <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span> <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#8212;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">siftDown<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">,<\/span> n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u5efa\u5806\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u662f O(n)&#xff0c;\u4e0d\u662f O(n log n)\u3002<\/p>\n<p>\u76f4\u89c9\u4e0a\u53ef\u80fd\u89c9\u5f97&#xff1a;n\/2 \u4e2a\u8282\u70b9\u6bcf\u4e2a sift down \u6700\u591a log n \u5c42&#xff0c;\u5e94\u8be5\u662f O(n log n)\u3002\u4f46\u5b9e\u9645\u66f4\u7d27\u7684\u754c\u662f O(n)&#xff0c;\u56e0\u4e3a\u5927\u90e8\u5206\u8282\u70b9\u5728\u5e95\u5c42&#xff0c;\u4e0b\u6c89\u6df1\u5ea6\u5f88\u5c0f\u3002<\/p>\n<p>\u7cbe\u786e\u8ba1\u7b97&#xff1a;\u7b2ck\u5c42\u6709 2^k \u4e2a\u8282\u70b9&#xff0c;\u6bcf\u4e2a\u6700\u591a\u4e0b\u6c89 (h-k) \u5c42&#xff08;h\u4e3a\u6811\u9ad8&#xff09;&#xff0c;\u603b\u5de5\u4f5c\u91cf\u4e3a&#xff1a;<\/p>\n<p><span class=\"katex--display\"><span class=\"katex-display\"><span class=\"katex\"><span class=\"katex-mathml\"><\/p>\n<p>          \u2211<\/p>\n<p>           k<\/p>\n<p>           &#061;<\/p>\n<p>           0<\/p>\n<p>          h<\/p>\n<p>          2<\/p>\n<p>          k<\/p>\n<p>         \u22c5<\/p>\n<p>         (<\/p>\n<p>         h<\/p>\n<p>         \u2212<\/p>\n<p>         k<\/p>\n<p>         )<\/p>\n<p>         &#061;<\/p>\n<p>          \u2211<\/p>\n<p>           j<\/p>\n<p>           &#061;<\/p>\n<p>           0<\/p>\n<p>          h<\/p>\n<p>         j<\/p>\n<p>         \u22c5<\/p>\n<p>          2<\/p>\n<p>           h<\/p>\n<p>           \u2212<\/p>\n<p>           j<\/p>\n<p>         &#061;<\/p>\n<p>         O<\/p>\n<p>         (<\/p>\n<p>          2<\/p>\n<p>          h<\/p>\n<p>         )<\/p>\n<p>         &#061;<\/p>\n<p>         O<\/p>\n<p>         (<\/p>\n<p>         n<\/p>\n<p>         )<\/p>\n<p>        \\\\sum_{k&#061;0}^{h} 2^k \\\\cdot (h-k) &#061; \\\\sum_{j&#061;0}^{h} j \\\\cdot 2^{h-j} &#061; O(2^h) &#061; O(n)<\/p>\n<p>     <\/span><span class=\"katex-html\"><span class=\"base\"><span class=\"strut\" style=\"height: 3.1382em;vertical-align: -1.3021em\"><\/span><span class=\"mop op-limits\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height: 1.8361em\"><span class=\"\" style=\"top: -1.8479em;margin-left: 0em\"><span class=\"pstrut\" style=\"height: 3.05em\"><\/span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\" style=\"margin-right: 0.0315em\">k<\/span><span class=\"mrel mtight\">&#061;<\/span><span class=\"mord mtight\">0<\/span><\/span><\/span><\/span><span class=\"\" style=\"top: -3.05em\"><span class=\"pstrut\" style=\"height: 3.05em\"><\/span><span class=\"\"><span class=\"mop op-symbol large-op\">\u2211<\/span><\/span><\/span><span class=\"\" style=\"top: -4.3em;margin-left: 0em\"><span class=\"pstrut\" style=\"height: 3.05em\"><\/span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\">h<\/span><\/span><\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height: 1.3021em\"><span class=\"\"><\/span><\/span><\/span><\/span><\/span><span class=\"mspace\" style=\"margin-right: 0.1667em\"><\/span><span class=\"mord\"><span class=\"mord\">2<\/span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height: 0.8991em\"><span class=\"\" style=\"top: -3.113em;margin-right: 0.05em\"><span class=\"pstrut\" style=\"height: 2.7em\"><\/span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mathnormal mtight\" style=\"margin-right: 0.0315em\">k<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><span class=\"mspace\" style=\"margin-right: 0.2222em\"><\/span><span class=\"mbin\">\u22c5<\/span><span class=\"mspace\" style=\"margin-right: 0.2222em\"><\/span><\/span><span class=\"base\"><span class=\"strut\" style=\"height: 1em;vertical-align: -0.25em\"><\/span><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\">h<\/span><span class=\"mspace\" style=\"margin-right: 0.2222em\"><\/span><span class=\"mbin\">\u2212<\/span><span class=\"mspace\" style=\"margin-right: 0.2222em\"><\/span><\/span><span class=\"base\"><span class=\"strut\" style=\"height: 1em;vertical-align: -0.25em\"><\/span><span class=\"mord mathnormal\" style=\"margin-right: 0.0315em\">k<\/span><span class=\"mclose\">)<\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><span class=\"mrel\">&#061;<\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><\/span><span class=\"base\"><span class=\"strut\" style=\"height: 3.2499em;vertical-align: -1.4138em\"><\/span><span class=\"mop op-limits\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height: 1.8361em\"><span class=\"\" style=\"top: -1.8723em;margin-left: 0em\"><span class=\"pstrut\" style=\"height: 3.05em\"><\/span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\" style=\"margin-right: 0.0572em\">j<\/span><span class=\"mrel mtight\">&#061;<\/span><span class=\"mord mtight\">0<\/span><\/span><\/span><\/span><span class=\"\" style=\"top: -3.05em\"><span class=\"pstrut\" style=\"height: 3.05em\"><\/span><span class=\"\"><span class=\"mop op-symbol large-op\">\u2211<\/span><\/span><\/span><span class=\"\" style=\"top: -4.3em;margin-left: 0em\"><span class=\"pstrut\" style=\"height: 3.05em\"><\/span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\">h<\/span><\/span><\/span><\/span><\/span><span class=\"vlist-s\">\u200b<\/span><\/span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height: 1.4138em\"><span class=\"\"><\/span><\/span><\/span><\/span><\/span><span class=\"mspace\" style=\"margin-right: 0.1667em\"><\/span><span class=\"mord mathnormal\" style=\"margin-right: 0.0572em\">j<\/span><span class=\"mspace\" style=\"margin-right: 0.2222em\"><\/span><span class=\"mbin\">\u22c5<\/span><span class=\"mspace\" style=\"margin-right: 0.2222em\"><\/span><\/span><span class=\"base\"><span class=\"strut\" style=\"height: 0.8991em\"><\/span><span class=\"mord\"><span class=\"mord\">2<\/span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height: 0.8991em\"><span class=\"\" style=\"top: -3.113em;margin-right: 0.05em\"><span class=\"pstrut\" style=\"height: 2.7em\"><\/span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mtight\"><span class=\"mord mathnormal mtight\">h<\/span><span class=\"mbin mtight\">\u2212<\/span><span class=\"mord mathnormal mtight\" style=\"margin-right: 0.0572em\">j<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><span class=\"mrel\">&#061;<\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><\/span><span class=\"base\"><span class=\"strut\" style=\"height: 1.1491em;vertical-align: -0.25em\"><\/span><span class=\"mord mathnormal\" style=\"margin-right: 0.0278em\">O<\/span><span class=\"mopen\">(<\/span><span class=\"mord\"><span class=\"mord\">2<\/span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height: 0.8991em\"><span class=\"\" style=\"top: -3.113em;margin-right: 0.05em\"><span class=\"pstrut\" style=\"height: 2.7em\"><\/span><span class=\"sizing reset-size6 size3 mtight\"><span class=\"mord mathnormal mtight\">h<\/span><\/span><\/span><\/span><\/span><\/span><\/span><\/span><span class=\"mclose\">)<\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><span class=\"mrel\">&#061;<\/span><span class=\"mspace\" style=\"margin-right: 0.2778em\"><\/span><\/span><span class=\"base\"><span class=\"strut\" style=\"height: 1em;vertical-align: -0.25em\"><\/span><span class=\"mord mathnormal\" style=\"margin-right: 0.0278em\">O<\/span><span class=\"mopen\">(<\/span><span class=\"mord mathnormal\">n<\/span><span class=\"mclose\">)<\/span><\/span><\/span><\/span><\/span><\/span><\/p>\n<p>\u8fd9\u662f\u4e00\u4e2a\u6536\u655b\u7684\u7ea7\u6570&#xff0c;\u7ed3\u679c\u4e3a O(n)\u3002<\/p>\n<h4>7.4 \u5806\u6392\u5e8f\u5b8c\u6574\u8fc7\u7a0b<\/h4>\n<p>\u5efa\u5806\u540e&#xff0c;\u5806\u9876&#xff08;arr[0]&#xff09;\u5c31\u662f\u6700\u5927\u503c\u3002\u6392\u5e8f\u8fc7\u7a0b&#xff1a;\u628a\u6700\u5927\u503c\u4ea4\u6362\u5230\u672b\u5c3e&#xff0c;\u7f29\u5c0f\u5806\u8303\u56f4&#xff0c;\u518d sift down \u8c03\u6574\u3002<\/p>\n<p>  #mermaid-svg-mPcUfXqKoBlKONVR{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-mPcUfXqKoBlKONVR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-mPcUfXqKoBlKONVR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-mPcUfXqKoBlKONVR .error-icon{fill:#552222;}#mermaid-svg-mPcUfXqKoBlKONVR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-mPcUfXqKoBlKONVR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-mPcUfXqKoBlKONVR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-mPcUfXqKoBlKONVR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-mPcUfXqKoBlKONVR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-mPcUfXqKoBlKONVR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-mPcUfXqKoBlKONVR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-mPcUfXqKoBlKONVR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-mPcUfXqKoBlKONVR .marker.cross{stroke:#333333;}#mermaid-svg-mPcUfXqKoBlKONVR svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-mPcUfXqKoBlKONVR p{margin:0;}#mermaid-svg-mPcUfXqKoBlKONVR .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-mPcUfXqKoBlKONVR .cluster-label text{fill:#333;}#mermaid-svg-mPcUfXqKoBlKONVR .cluster-label span{color:#333;}#mermaid-svg-mPcUfXqKoBlKONVR .cluster-label span p{background-color:transparent;}#mermaid-svg-mPcUfXqKoBlKONVR .label text,#mermaid-svg-mPcUfXqKoBlKONVR span{fill:#333;color:#333;}#mermaid-svg-mPcUfXqKoBlKONVR .node rect,#mermaid-svg-mPcUfXqKoBlKONVR .node circle,#mermaid-svg-mPcUfXqKoBlKONVR .node ellipse,#mermaid-svg-mPcUfXqKoBlKONVR .node polygon,#mermaid-svg-mPcUfXqKoBlKONVR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-mPcUfXqKoBlKONVR .rough-node .label text,#mermaid-svg-mPcUfXqKoBlKONVR .node .label text,#mermaid-svg-mPcUfXqKoBlKONVR .image-shape .label,#mermaid-svg-mPcUfXqKoBlKONVR .icon-shape .label{text-anchor:middle;}#mermaid-svg-mPcUfXqKoBlKONVR .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-mPcUfXqKoBlKONVR .rough-node .label,#mermaid-svg-mPcUfXqKoBlKONVR .node .label,#mermaid-svg-mPcUfXqKoBlKONVR .image-shape .label,#mermaid-svg-mPcUfXqKoBlKONVR .icon-shape .label{text-align:center;}#mermaid-svg-mPcUfXqKoBlKONVR .node.clickable{cursor:pointer;}#mermaid-svg-mPcUfXqKoBlKONVR .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-mPcUfXqKoBlKONVR .arrowheadPath{fill:#333333;}#mermaid-svg-mPcUfXqKoBlKONVR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-mPcUfXqKoBlKONVR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-mPcUfXqKoBlKONVR .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mPcUfXqKoBlKONVR .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-mPcUfXqKoBlKONVR .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mPcUfXqKoBlKONVR .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-mPcUfXqKoBlKONVR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-mPcUfXqKoBlKONVR .cluster text{fill:#333;}#mermaid-svg-mPcUfXqKoBlKONVR .cluster span{color:#333;}#mermaid-svg-mPcUfXqKoBlKONVR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-mPcUfXqKoBlKONVR .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-mPcUfXqKoBlKONVR rect.text{fill:none;stroke-width:0;}#mermaid-svg-mPcUfXqKoBlKONVR .icon-shape,#mermaid-svg-mPcUfXqKoBlKONVR .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mPcUfXqKoBlKONVR .icon-shape p,#mermaid-svg-mPcUfXqKoBlKONVR .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-mPcUfXqKoBlKONVR .icon-shape .label rect,#mermaid-svg-mPcUfXqKoBlKONVR .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mPcUfXqKoBlKONVR .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-mPcUfXqKoBlKONVR .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-mPcUfXqKoBlKONVR :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5806\u6392\u5e8f\u8fc7\u7a0b&#xff08;\u5efa\u5806\u540e [10,5,3,4,1,2]&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5927\u9876\u5806: [10,5,3,4,1,2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362arr[0]\u2194arr[5] \u2192 [2,5,3,4,1|10]siftDown(0,5) \u2192 [5,4,3,2,1|10]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362arr[0]\u2194arr[4] \u2192 [1,4,3,2|5,10]siftDown(0,4) \u2192 [4,2,3,1|5,10]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362arr[0]\u2194arr[3] \u2192 [1,2,3|4,5,10]siftDown(0,3) \u2192 [3,2,1|4,5,10]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362arr[0]\u2194arr[2] \u2192 [1,2|3,4,5,10]siftDown(0,2) \u2192 [2,1|3,4,5,10]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4ea4\u6362arr[0]\u2194arr[1] \u2192 [1|2,3,4,5,10]siftDown(0,1) \u2192 [1|2,3,4,5,10]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5b8c\u6210: [1,2,3,4,5,10]<\/p>\n<p><\/span><\/p>\n<p>\u56fe7-4&#xff1a;\u5806\u6392\u5e8f\u2014\u2014\u53cd\u590d\u53d6\u5806\u9876\u6700\u5927\u503c\u653e\u5230\u672b\u5c3e&#xff08;\u6a59\u8272&#xff09;&#xff0c;\u7f29\u5c0f\u5806\u5e76sift down\u8c03\u6574\u3002\u7ad6\u7ebf\u5de6\u4fa7\u4e3a\u5806&#xff0c;\u53f3\u4fa7\u4e3a\u5df2\u6392\u5e8f\u90e8\u5206<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">heapSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ 1. \u5efa\u5927\u9876\u5806<\/span><br \/>\n    <span class=\"token function\">buildHeap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token comment\">\/\/ 2. \u53cd\u590d\u53d6\u5806\u9876\u6700\u5927\u503c\u653e\u5230\u672b\u5c3e<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#8212;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>      <span class=\"token comment\">\/\/ \u6700\u5927\u503c\u653e\u5230\u672b\u5c3e<\/span><br \/>\n        <span class=\"token function\">siftDown<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u8c03\u6574\u5806&#xff0c;\u8303\u56f4\u7f29\u5c0f\u5230[0, i)<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>7.5 \u590d\u6742\u5ea6\u5206\u6790<\/h4>\n<p>\u65f6\u95f4\u590d\u6742\u5ea6&#xff1a;<\/p>\n<table>\n<tr>\u9636\u6bb5\u590d\u6742\u5ea6\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u5efa\u5806<\/td>\n<td>O(n)<\/td>\n<td>\u4ece\u6700\u540e\u4e00\u4e2a\u975e\u53f6\u5b50\u8282\u70b9\u9010\u4e2asift down<\/td>\n<\/tr>\n<tr>\n<td>\u6392\u5e8f<\/td>\n<td>O(n log n)<\/td>\n<td>n-1\u6b21\u4ea4\u6362&#043;sift down&#xff0c;\u6bcf\u6b21O(log n)<\/td>\n<\/tr>\n<tr>\n<td>\u603b\u8ba1<\/td>\n<td>O(n log n)<\/td>\n<td>O(n) &#043; O(n log n) &#061; O(n log n)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5806\u6392\u5e8f\u7684\u6700\u597d\u3001\u5e73\u5747\u3001\u6700\u574f\u90fd\u662f O(n log n)&#xff0c;\u6ca1\u6709\u9000\u5316\u95ee\u9898\u3002\u8fd9\u662f\u5b83\u76f8\u5bf9\u4e8e\u5feb\u6392\u7684\u4f18\u52bf\u3002<\/p>\n<p>\u7a7a\u95f4\u590d\u6742\u5ea6&#xff1a;O(1)&#xff0c;\u539f\u5730\u6392\u5e8f&#xff0c;\u4e0d\u9700\u8981\u989d\u5916\u7a7a\u95f4\u3002<\/p>\n<h4>7.6 \u7a33\u5b9a\u6027\u5206\u6790<\/h4>\n<p>\u5806\u6392\u5e8f\u662f\u4e0d\u7a33\u5b9a\u7684\u3002<\/p>\n<p>\u4e0d\u7a33\u5b9a\u7684\u539f\u56e0\u5728\u5efa\u5806\u548c\u6392\u5e8f\u8fc7\u7a0b\u4e2d\u7684\u8de8\u8d8a\u5f0f\u4ea4\u6362\u3002\u8003\u8651\u6570\u7ec4 [5a, 5b, 3]&#xff1a;<\/p>\n<p>\u5efa\u5927\u9876\u5806&#xff1a;<br \/>\n  \u7d22\u5f150(5a)\u7684\u5b50\u8282\u70b9\u662f5b\u548c3&#xff0c;5a\u22655b\u4e145a\u22653&#xff0c;\u65e0\u9700\u8c03\u6574<br \/>\n  \u5efa\u5806\u540e: [5a, 5b, 3]<\/p>\n<p>\u6392\u5e8f\u7b2c1\u6b65&#xff1a;<br \/>\n  \u4ea4\u6362arr[0]\u2194arr[2] \u2192 [3, 5b, 5a]  \u2190 5a\u8dd1\u5230\u4e865b\u540e\u9762<\/p>\n<p>\u5806\u6392\u5e8f\u4e2d\u7684\u4ea4\u6362&#xff08;\u5806\u9876\u4e0e\u672b\u5c3e\u4ea4\u6362\u3001sift down \u4e2d\u7684\u7236\u5b50\u4ea4\u6362&#xff09;\u90fd\u4e0d\u662f\u76f8\u90bb\u4ea4\u6362&#xff0c;\u65e0\u6cd5\u4fdd\u8bc1\u76f8\u7b49\u5143\u7d20\u7684\u76f8\u5bf9\u987a\u5e8f\u3002<\/p>\n<h4>7.7 \u5806\u6392\u5e8f vs \u5feb\u6392<\/h4>\n<table>\n<tr>\u7ef4\u5ea6\u5806\u6392\u5e8f\u5feb\u901f\u6392\u5e8f<\/tr>\n<tbody>\n<tr>\n<td>\u6700\u574f\u65f6\u95f4<\/td>\n<td>O(n log n)<\/td>\n<td>O(n\u00b2)<\/td>\n<\/tr>\n<tr>\n<td>\u5e73\u5747\u65f6\u95f4<\/td>\n<td>O(n log n)<\/td>\n<td>O(n log n)<\/td>\n<\/tr>\n<tr>\n<td>\u7a7a\u95f4<\/td>\n<td>O(1)<\/td>\n<td>O(log n)<\/td>\n<\/tr>\n<tr>\n<td>\u7a33\u5b9a\u6027<\/td>\n<td>\u4e0d\u7a33\u5b9a<\/td>\n<td>\u4e0d\u7a33\u5b9a<\/td>\n<\/tr>\n<tr>\n<td>\u7f13\u5b58\u53cb\u597d\u5ea6<\/td>\n<td>\u5dee&#xff08;\u8df3\u8dc3\u8bbf\u95ee\u7236\/\u5b50\u8282\u70b9&#xff09;<\/td>\n<td>\u597d&#xff08;\u987a\u5e8f\u626b\u63cf&#xff09;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u5806\u6392\u5e8f\u6700\u574fO(n log n)\u770b\u4f3c\u6bd4\u5feb\u6392\u66f4\u4f18&#xff0c;\u4f46\u5b9e\u9645\u5de5\u7a0b\u4e2d\u5feb\u6392\u901a\u5e38\u66f4\u5feb\u3002\u5173\u952e\u7684\u5dee\u5f02\u5728\u7f13\u5b58&#xff1a;<\/p>\n<p>\u5806\u6392\u5e8f\u4e2d&#xff0c;sift down \u9700\u8981\u8bbf\u95ee i\u30012i&#043;1\u30012i&#043;2 \u8fd9\u4e09\u4e2a\u4f4d\u7f6e&#xff0c;\u7d22\u5f15\u8de8\u5ea6\u5927&#xff0c;\u7f13\u5b58\u547d\u4e2d\u7387\u4f4e\u3002\u5f53\u6570\u7ec4\u8f83\u5927\u65f6&#xff0c;\u51e0\u4e4e\u6bcf\u6b21\u8bbf\u95ee\u90fd\u662f\u7f13\u5b58\u672a\u547d\u4e2d\u3002\u5feb\u6392\u7684 partition \u662f\u987a\u5e8f\u626b\u63cf&#xff0c;CPU \u9884\u53d6\u673a\u5236\u80fd\u63d0\u524d\u52a0\u8f7d\u6570\u636e&#xff0c;\u7f13\u5b58\u547d\u4e2d\u7387\u9ad8\u3002<\/p>\n<p>\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48 C&#043;&#043; STL \u7684 sort \u7528 IntroSort&#xff08;\u5feb\u6392\u4e3a\u4e3b\u3001\u9000\u5316\u65f6\u5207\u5806\u6392&#xff09;&#xff0c;\u800c\u4e0d\u662f\u76f4\u63a5\u7528\u5806\u6392\u2014\u2014\u5feb\u6392\u5728\u6b63\u5e38\u60c5\u51b5\u4e0b\u66f4\u5feb&#xff0c;\u53ea\u5728\u5feb\u6392\u9000\u5316\u65f6\u624d\u7528\u5806\u6392\u515c\u5e95\u3002<\/p>\n<h4>7.8 \u5806\u6392\u5e8f\u7684\u6838\u5fc3\u5e94\u7528&#xff1a;Top-K \u95ee\u9898<\/h4>\n<p>\u5806\u6392\u5e8f\u5728\u5de5\u7a0b\u4e2d\u6700\u91cd\u8981\u7684\u5e94\u7528\u4e0d\u662f\u5168\u91cf\u6392\u5e8f&#xff0c;\u800c\u662f Top-K \u95ee\u9898&#xff1a;\u4ecen\u4e2a\u5143\u7d20\u4e2d\u627e\u6700\u5927\/\u6700\u5c0f\u7684k\u4e2a\u3002<\/p>\n<p>  #mermaid-svg-ST1U8FMJAC2rIlL2{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ST1U8FMJAC2rIlL2 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ST1U8FMJAC2rIlL2 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ST1U8FMJAC2rIlL2 .error-icon{fill:#552222;}#mermaid-svg-ST1U8FMJAC2rIlL2 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ST1U8FMJAC2rIlL2 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ST1U8FMJAC2rIlL2 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ST1U8FMJAC2rIlL2 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ST1U8FMJAC2rIlL2 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ST1U8FMJAC2rIlL2 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ST1U8FMJAC2rIlL2 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ST1U8FMJAC2rIlL2 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ST1U8FMJAC2rIlL2 .marker.cross{stroke:#333333;}#mermaid-svg-ST1U8FMJAC2rIlL2 svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ST1U8FMJAC2rIlL2 p{margin:0;}#mermaid-svg-ST1U8FMJAC2rIlL2 .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-ST1U8FMJAC2rIlL2 .cluster-label text{fill:#333;}#mermaid-svg-ST1U8FMJAC2rIlL2 .cluster-label span{color:#333;}#mermaid-svg-ST1U8FMJAC2rIlL2 .cluster-label span p{background-color:transparent;}#mermaid-svg-ST1U8FMJAC2rIlL2 .label text,#mermaid-svg-ST1U8FMJAC2rIlL2 span{fill:#333;color:#333;}#mermaid-svg-ST1U8FMJAC2rIlL2 .node rect,#mermaid-svg-ST1U8FMJAC2rIlL2 .node circle,#mermaid-svg-ST1U8FMJAC2rIlL2 .node ellipse,#mermaid-svg-ST1U8FMJAC2rIlL2 .node polygon,#mermaid-svg-ST1U8FMJAC2rIlL2 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ST1U8FMJAC2rIlL2 .rough-node .label text,#mermaid-svg-ST1U8FMJAC2rIlL2 .node .label text,#mermaid-svg-ST1U8FMJAC2rIlL2 .image-shape .label,#mermaid-svg-ST1U8FMJAC2rIlL2 .icon-shape .label{text-anchor:middle;}#mermaid-svg-ST1U8FMJAC2rIlL2 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ST1U8FMJAC2rIlL2 .rough-node .label,#mermaid-svg-ST1U8FMJAC2rIlL2 .node .label,#mermaid-svg-ST1U8FMJAC2rIlL2 .image-shape .label,#mermaid-svg-ST1U8FMJAC2rIlL2 .icon-shape .label{text-align:center;}#mermaid-svg-ST1U8FMJAC2rIlL2 .node.clickable{cursor:pointer;}#mermaid-svg-ST1U8FMJAC2rIlL2 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ST1U8FMJAC2rIlL2 .arrowheadPath{fill:#333333;}#mermaid-svg-ST1U8FMJAC2rIlL2 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ST1U8FMJAC2rIlL2 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ST1U8FMJAC2rIlL2 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ST1U8FMJAC2rIlL2 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ST1U8FMJAC2rIlL2 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ST1U8FMJAC2rIlL2 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ST1U8FMJAC2rIlL2 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ST1U8FMJAC2rIlL2 .cluster text{fill:#333;}#mermaid-svg-ST1U8FMJAC2rIlL2 .cluster span{color:#333;}#mermaid-svg-ST1U8FMJAC2rIlL2 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ST1U8FMJAC2rIlL2 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ST1U8FMJAC2rIlL2 rect.text{fill:none;stroke-width:0;}#mermaid-svg-ST1U8FMJAC2rIlL2 .icon-shape,#mermaid-svg-ST1U8FMJAC2rIlL2 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ST1U8FMJAC2rIlL2 .icon-shape p,#mermaid-svg-ST1U8FMJAC2rIlL2 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ST1U8FMJAC2rIlL2 .icon-shape .label rect,#mermaid-svg-ST1U8FMJAC2rIlL2 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ST1U8FMJAC2rIlL2 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ST1U8FMJAC2rIlL2 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ST1U8FMJAC2rIlL2 :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>Top-K\u95ee\u9898&#xff08;\u627e\u6700\u5927\u7684k&#061;3\u4e2a\u5143\u7d20&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u5426<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>10\u4ebf\u6761\u6570\u636e<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7ef4\u62a4\u5927\u5c0f\u4e3a3\u7684\u5c0f\u9876\u5806<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u904d\u5386\u6bcf\u4e2a\u5143\u7d20:<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5143\u7d20 &gt; \u5806\u9876?<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u66ff\u6362\u5806\u9876, siftDown\u8c03\u6574O(log k)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8df3\u8fc7<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u904d\u5386\u5b8c\u6210\u5806\u4e2d\u5c31\u662f\u6700\u5927\u76843\u4e2a<\/p>\n<p><\/span><\/p>\n<p>\u56fe7-5&#xff1a;Top-K\u95ee\u9898\u2014\u2014\u7ef4\u62a4\u5927\u5c0f\u4e3ak\u7684\u5806&#xff0c;O(n log k)\u89e3\u51b3\u3002\u6bd4\u5168\u91cf\u6392\u5e8fO(n log n)\u5feb\u5f97\u591a<\/p>\n<p><span class=\"token comment\">\/\/ \u627e\u7b2ck\u5927\u7684\u5143\u7d20&#xff08;LeetCode 215&#xff09;<\/span><br \/>\n<span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token function\">findKthLargest<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> nums<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> k<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u7528\u5c0f\u9876\u5806\u7ef4\u62a4\u5f53\u524d\u6700\u5927\u7684k\u4e2a\u5143\u7d20<\/span><br \/>\n    <span class=\"token class-name\">PriorityQueue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">Integer<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> minHeap <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">PriorityQueue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> num <span class=\"token operator\">:<\/span> nums<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        minHeap<span class=\"token punctuation\">.<\/span><span class=\"token function\">offer<\/span><span class=\"token punctuation\">(<\/span>num<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>minHeap<span class=\"token punctuation\">.<\/span><span class=\"token function\">size<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">&gt;<\/span> k<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            minHeap<span class=\"token punctuation\">.<\/span><span class=\"token function\">poll<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5806\u9876&#xff08;\u6700\u5c0f&#xff09;\u51fa\u5806<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> minHeap<span class=\"token punctuation\">.<\/span><span class=\"token function\">peek<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5806\u9876\u5c31\u662f\u7b2ck\u5927<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u4e3a\u4ec0\u4e48\u7528\u5c0f\u9876\u5806\u627e\u6700\u5927\u7684k\u4e2a&#xff1f;\u56e0\u4e3a\u5c0f\u9876\u5806\u7684\u5806\u9876\u662f\u5f53\u524dk\u4e2a\u5143\u7d20\u4e2d\u7684\u6700\u5c0f\u503c\u3002\u65b0\u5143\u7d20\u5982\u679c\u6bd4\u5806\u9876\u5927&#xff0c;\u8bf4\u660e\u5b83\u5e94\u8be5\u8fdb\u5806&#xff1b;\u5982\u679c\u6bd4\u5806\u9876\u5c0f&#xff0c;\u8bf4\u660e\u5b83\u4e0d\u53ef\u80fd\u5728\u524dk\u5927\u4e2d\u3002\u6bcf\u6b21\u64cd\u4f5c O(log k)&#xff0c;\u603b\u590d\u6742\u5ea6 O(n log k)\u3002<\/p>\n<p>\u5bf9\u6bd4\u5168\u91cf\u6392\u5e8f O(n log n)&#xff0c;\u5f53 k \u8fdc\u5c0f\u4e8e n \u65f6&#xff0c;Top-K \u65b9\u6cd5\u5feb\u5f97\u591a\u3002\u800c\u4e14\u53ea\u9700\u8981 O(k) \u989d\u5916\u7a7a\u95f4&#xff0c;\u9002\u5408\u6d41\u5f0f\u6570\u636e&#xff08;\u4e0d\u9700\u8981\u4e00\u6b21\u6027\u52a0\u8f7d\u6240\u6709\u6570\u636e&#xff09;\u3002<\/p>\n<hr \/>\n<h3>\u7b2c8\u7ae0 \u975e\u6bd4\u8f83\u6392\u5e8f&#xff1a;\u8ba1\u6570\u3001\u57fa\u6570\u4e0e\u6876\u6392\u5e8f<\/h3>\n<p>\u524d\u97627\u79cd\u6392\u5e8f\u7b97\u6cd5\u90fd\u662f\u6bd4\u8f83\u6392\u5e8f&#xff0c;\u6700\u574f\u60c5\u51b5\u4e0b\u81f3\u5c11 O(n log n)\u3002\u672c\u7ae0\u4ecb\u7ecd\u4e09\u79cd\u975e\u6bd4\u8f83\u6392\u5e8f&#xff0c;\u5b83\u4eec\u7a81\u7834\u4e86\u8fd9\u4e2a\u4e0b\u754c&#xff0c;\u4f46\u5404\u6709\u9002\u7528\u6761\u4ef6\u3002<\/p>\n<h4>8.1 \u8ba1\u6570\u6392\u5e8f&#xff08;Counting Sort&#xff09;<\/h4>\n<h5>8.1.1 \u6838\u5fc3\u601d\u60f3<\/h5>\n<p>\u8ba1\u6570\u6392\u5e8f\u4e0d\u662f\u6bd4\u8f83\u5143\u7d20\u5927\u5c0f&#xff0c;\u800c\u662f\u7edf\u8ba1\u6bcf\u4e2a\u503c\u51fa\u73b0\u7684\u6b21\u6570&#xff0c;\u7136\u540e\u6839\u636e\u7edf\u8ba1\u7ed3\u679c\u76f4\u63a5\u628a\u5143\u7d20\u653e\u5230\u6b63\u786e\u4f4d\u7f6e\u3002<\/p>\n<p>\u9002\u7528\u6761\u4ef6&#xff1a;\u5143\u7d20\u662f\u975e\u8d1f\u6574\u6570&#xff0c;\u4e14\u53d6\u503c\u8303\u56f4 k \u4e0d\u592a\u5927&#xff08;\u901a\u5e38 k &#061; O(n)&#xff09;\u3002\u4f8b\u5982\u5bf9100\u4e07\u4e2a\u5e74\u9f84\u6570\u636e&#xff08;0-150&#xff09;\u6392\u5e8f&#xff0c;k&#061;151 \u8fdc\u5c0f\u4e8e n&#061;1000000&#xff0c;\u975e\u5e38\u9002\u5408\u8ba1\u6570\u6392\u5e8f\u3002<\/p>\n<h5>8.1.2 \u6267\u884c\u8fc7\u7a0b\u56fe\u89e3<\/h5>\n<p>\u4ee5 [4, 2, 2, 8, 3, 3, 1] \u4e3a\u4f8b&#xff08;\u53d6\u503c\u8303\u56f40-8&#xff09;&#xff1a;<\/p>\n<p>  #mermaid-svg-IfvfT3BUugzDIrCe{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-IfvfT3BUugzDIrCe .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-IfvfT3BUugzDIrCe .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-IfvfT3BUugzDIrCe .error-icon{fill:#552222;}#mermaid-svg-IfvfT3BUugzDIrCe .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-IfvfT3BUugzDIrCe .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-IfvfT3BUugzDIrCe .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-IfvfT3BUugzDIrCe .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-IfvfT3BUugzDIrCe .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-IfvfT3BUugzDIrCe .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-IfvfT3BUugzDIrCe .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-IfvfT3BUugzDIrCe .marker{fill:#333333;stroke:#333333;}#mermaid-svg-IfvfT3BUugzDIrCe .marker.cross{stroke:#333333;}#mermaid-svg-IfvfT3BUugzDIrCe svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-IfvfT3BUugzDIrCe p{margin:0;}#mermaid-svg-IfvfT3BUugzDIrCe .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-IfvfT3BUugzDIrCe .cluster-label text{fill:#333;}#mermaid-svg-IfvfT3BUugzDIrCe .cluster-label span{color:#333;}#mermaid-svg-IfvfT3BUugzDIrCe .cluster-label span p{background-color:transparent;}#mermaid-svg-IfvfT3BUugzDIrCe .label text,#mermaid-svg-IfvfT3BUugzDIrCe span{fill:#333;color:#333;}#mermaid-svg-IfvfT3BUugzDIrCe .node rect,#mermaid-svg-IfvfT3BUugzDIrCe .node circle,#mermaid-svg-IfvfT3BUugzDIrCe .node ellipse,#mermaid-svg-IfvfT3BUugzDIrCe .node polygon,#mermaid-svg-IfvfT3BUugzDIrCe .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-IfvfT3BUugzDIrCe .rough-node .label text,#mermaid-svg-IfvfT3BUugzDIrCe .node .label text,#mermaid-svg-IfvfT3BUugzDIrCe .image-shape .label,#mermaid-svg-IfvfT3BUugzDIrCe .icon-shape .label{text-anchor:middle;}#mermaid-svg-IfvfT3BUugzDIrCe .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-IfvfT3BUugzDIrCe .rough-node .label,#mermaid-svg-IfvfT3BUugzDIrCe .node .label,#mermaid-svg-IfvfT3BUugzDIrCe .image-shape .label,#mermaid-svg-IfvfT3BUugzDIrCe .icon-shape .label{text-align:center;}#mermaid-svg-IfvfT3BUugzDIrCe .node.clickable{cursor:pointer;}#mermaid-svg-IfvfT3BUugzDIrCe .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-IfvfT3BUugzDIrCe .arrowheadPath{fill:#333333;}#mermaid-svg-IfvfT3BUugzDIrCe .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-IfvfT3BUugzDIrCe .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-IfvfT3BUugzDIrCe .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-IfvfT3BUugzDIrCe .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-IfvfT3BUugzDIrCe .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-IfvfT3BUugzDIrCe .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-IfvfT3BUugzDIrCe .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-IfvfT3BUugzDIrCe .cluster text{fill:#333;}#mermaid-svg-IfvfT3BUugzDIrCe .cluster span{color:#333;}#mermaid-svg-IfvfT3BUugzDIrCe div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-IfvfT3BUugzDIrCe .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-IfvfT3BUugzDIrCe rect.text{fill:none;stroke-width:0;}#mermaid-svg-IfvfT3BUugzDIrCe .icon-shape,#mermaid-svg-IfvfT3BUugzDIrCe .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-IfvfT3BUugzDIrCe .icon-shape p,#mermaid-svg-IfvfT3BUugzDIrCe .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-IfvfT3BUugzDIrCe .icon-shape .label rect,#mermaid-svg-IfvfT3BUugzDIrCe .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-IfvfT3BUugzDIrCe .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-IfvfT3BUugzDIrCe .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-IfvfT3BUugzDIrCe :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8ba1\u6570\u6392\u5e8f\u8fc7\u7a0b<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8f93\u5165: [4, 2, 2, 8, 3, 3, 1]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c1\u6b65: \u7edf\u8ba1\u9891\u6b21count[0]&#061;0, count[1]&#061;1, count[2]&#061;2count[3]&#061;2, count[4]&#061;1, count[5]&#061;0count[6]&#061;0, count[7]&#061;0, count[8]&#061;1<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c2\u6b65: \u524d\u7f00\u548c&#xff08;\u8ba1\u7b97\u4f4d\u7f6e&#xff09;pos[0]&#061;0, pos[1]&#061;1, pos[2]&#061;3pos[3]&#061;5, pos[4]&#061;6, pos[5]&#061;6pos[6]&#061;6, pos[7]&#061;6, pos[8]&#061;7<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u7b2c3\u6b65: \u9006\u5e8f\u904d\u5386\u586b\u5165\u8f93\u51fa\u6570\u7ec41\u2192\u7d22\u5f150, 3\u2192\u7d22\u5f154, 3\u2192\u7d22\u5f1538\u2192\u7d22\u5f156, 2\u2192\u7d22\u5f152, 2\u2192\u7d22\u5f151, 4\u2192\u7d22\u5f155<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8f93\u51fa: [1, 2, 2, 3, 3, 4, 8]<\/p>\n<p><\/span><\/p>\n<p>\u56fe8-1&#xff1a;\u8ba1\u6570\u6392\u5e8f\u2014\u2014\u7edf\u8ba1\u9891\u6b21\u2192\u524d\u7f00\u548c\u5b9a\u4f4d\u2192\u9006\u5e8f\u586b\u5165\u4fdd\u8bc1\u7a33\u5b9a\u6027<\/p>\n<p>\u4e3a\u4ec0\u4e48\u8981\u524d\u7f00\u548c&#xff1f;\u524d\u7f00\u548c\u540e count[v] \u8868\u793a \u2264v \u7684\u5143\u7d20\u603b\u6570&#xff0c;\u5373\u503cv\u5e94\u653e\u7f6e\u7684\u6700\u540e\u4e00\u4e2a\u4f4d\u7f6e&#043;1\u3002\u4f8b\u5982 count[3] &#061; 5 \u8868\u793a\u67095\u4e2a\u5143\u7d20 \u22643&#xff08;\u4e00\u4e2a1\u3001\u4e24\u4e2a2\u3001\u4e24\u4e2a3&#xff09;&#xff0c;\u4e24\u4e2a3\u901a\u8fc7 &#8211;count[3] \u5206\u522b\u653e\u5230\u7d22\u5f154\u548c3\u3002<\/p>\n<p>\u4e3a\u4ec0\u4e48\u8981\u9006\u5e8f\u904d\u5386&#xff1a;\u9006\u5e8f\u904d\u5386\u8f93\u5165\u6570\u7ec4\u5e76\u901a\u8fc7 pos[v]&#8211; \u6765\u653e\u7f6e\u5143\u7d20&#xff0c;\u4fdd\u8bc1\u76f8\u540c\u503c\u7684\u5143\u7d20\u4fdd\u6301\u539f\u6765\u7684\u5148\u540e\u987a\u5e8f\u2014\u2014\u540e\u9762\u7684\u5148\u653e&#xff08;\u653e\u5230\u540e\u9762&#xff09;&#xff0c;\u524d\u9762\u7684\u540e\u653e&#xff08;\u653e\u5230\u524d\u9762&#xff09;&#xff0c;\u4ece\u800c\u5b9e\u73b0\u7a33\u5b9a\u6392\u5e8f\u3002<\/p>\n<h5>8.1.3 \u4ee3\u7801\u5b9e\u73b0<\/h5>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">countingSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&lt;&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ 1. \u627e\u6700\u5927\u503c\u786e\u5b9a\u8303\u56f4<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> max <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> num <span class=\"token operator\">:<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>num <span class=\"token operator\">&gt;<\/span> max<span class=\"token punctuation\">)<\/span> max <span class=\"token operator\">&#061;<\/span> num<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ 2. \u7edf\u8ba1\u9891\u6b21<\/span><br \/>\n    <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> count <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span>max <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> num <span class=\"token operator\">:<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        count<span class=\"token punctuation\">[<\/span>num<span class=\"token punctuation\">]<\/span><span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ 3. \u524d\u7f00\u548c&#xff08;\u8ba1\u7b97\u6bcf\u4e2a\u503c\u7684\u8d77\u59cb\u4f4d\u7f6e&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;&#061;<\/span> max<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        count<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;&#061;<\/span> count<span class=\"token punctuation\">[<\/span>i <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u6b64\u65f6count[v]\u8868\u793a\u503cv\u7684\u6700\u540e\u4e00\u4e2a\u4f4d\u7f6e&#043;1<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ 4. \u9006\u5e8f\u904d\u5386&#xff0c;\u586b\u5165\u8f93\u51fa\u6570\u7ec4&#xff08;\u4fdd\u8bc1\u7a33\u5b9a\u6027&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> output <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span>arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#8212;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> v <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        output<span class=\"token punctuation\">[<\/span><span class=\"token operator\">&#8212;<\/span>count<span class=\"token punctuation\">[<\/span>v<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> v<span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5148\u51cf1\u518d\u653e<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ 5. \u62f7\u56de\u539f\u6570\u7ec4<\/span><br \/>\n    <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">arraycopy<\/span><span class=\"token punctuation\">(<\/span>output<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h5>8.1.4 \u590d\u6742\u5ea6\u5206\u6790<\/h5>\n<ul>\n<li>\u65f6\u95f4&#xff1a;O(n &#043; k)&#xff0c;n\u4e3a\u5143\u7d20\u4e2a\u6570&#xff0c;k\u4e3a\u53d6\u503c\u8303\u56f4\u3002\u627e\u6700\u5927\u503cO(n)&#xff0c;\u7edf\u8ba1O(n)&#xff0c;\u524d\u7f00\u548cO(k)&#xff0c;\u586b\u5145O(n)<\/li>\n<li>\u7a7a\u95f4&#xff1a;O(n &#043; k)&#xff0c;count\u6570\u7ec4O(k)&#xff0c;output\u6570\u7ec4O(n)<\/li>\n<li>\u7a33\u5b9a\u6027&#xff1a;\u7a33\u5b9a\u3002\u9006\u5e8f\u904d\u5386 &#043; \u524d\u7f00\u548c\u9012\u51cf\u4fdd\u8bc1\u76f8\u7b49\u5143\u7d20\u4fdd\u6301\u539f\u5e8f<\/li>\n<\/ul>\n<p>\u4ec0\u4e48\u65f6\u5019\u8ba1\u6570\u6392\u5e8f\u6bd4\u5feb\u6392\u5feb&#xff1a;\u5f53 k &#061; O(n) \u65f6&#xff0c;O(n&#043;k) &#061; O(n)&#xff0c;\u8fdc\u5feb\u4e8e O(n log n)\u3002\u5f53 k &gt;&gt; n \u65f6&#xff08;\u5982n&#061;100&#xff0c;k&#061;10^9&#xff09;&#xff0c;count\u6570\u7ec4\u592a\u5927&#xff0c;\u4e0d\u9002\u7528\u3002<\/p>\n<h4>8.2 \u57fa\u6570\u6392\u5e8f&#xff08;Radix Sort&#xff09;<\/h4>\n<h5>8.2.1 \u6838\u5fc3\u601d\u60f3<\/h5>\n<p>\u57fa\u6570\u6392\u5e8f\u5bf9\u6574\u6570\u7684\u6bcf\u4e00\u4f4d\u5206\u522b\u6392\u5e8f&#xff0c;\u4ece\u6700\u4f4e\u4f4d\u5230\u6700\u9ad8\u4f4d&#xff08;LSD&#xff0c;Least Significant Digit&#xff09;\u6216\u4ece\u6700\u9ad8\u4f4d\u5230\u6700\u4f4e\u4f4d&#xff08;MSD&#xff09;\u3002\u6bcf\u4e00\u6b21&#034;\u6309\u67d0\u4f4d\u6392\u5e8f&#034;\u4f7f\u7528\u8ba1\u6570\u6392\u5e8f&#xff08;\u56e0\u4e3a\u6570\u5b570-9\u53ea\u670910\u4e2a\u53d6\u503c&#xff09;\u3002<\/p>\n<p>\u4e3a\u4ec0\u4e48\u4ece\u6700\u4f4e\u4f4d\u5f00\u59cb&#xff08;LSD&#xff09;\u6709\u6548&#xff1f;\u56e0\u4e3a\u9ad8\u4f4d\u7684\u6392\u5e8f\u662f\u6700\u7ec8\u7684\u6392\u5e8f\u4f9d\u636e&#xff0c;\u4f4e\u4f4d\u6392\u5e8f\u4e0d\u80fd\u6253\u4e71\u9ad8\u4f4d\u5df2\u6392\u597d\u7684\u987a\u5e8f\u3002\u7a33\u5b9a\u6392\u5e8f\u662f\u5173\u952e\u2014\u2014\u5982\u679c\u67d0\u4f4d\u6392\u5e8f\u4e0d\u7a33\u5b9a&#xff0c;\u9ad8\u4f4d\u7684\u6392\u5e8f\u7ed3\u679c\u5c31\u4f1a\u88ab\u4f4e\u4f4d\u6253\u4e71\u3002<\/p>\n<h5>8.2.2 \u6267\u884c\u8fc7\u7a0b\u56fe\u89e3<\/h5>\n<p>\u4ee5 [329, 457, 657, 839, 436, 720, 355] \u4e3a\u4f8b&#xff1a;<\/p>\n<p>  #mermaid-svg-hgsrXKJU9DvzCU56{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-hgsrXKJU9DvzCU56 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-hgsrXKJU9DvzCU56 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-hgsrXKJU9DvzCU56 .error-icon{fill:#552222;}#mermaid-svg-hgsrXKJU9DvzCU56 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hgsrXKJU9DvzCU56 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-hgsrXKJU9DvzCU56 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hgsrXKJU9DvzCU56 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hgsrXKJU9DvzCU56 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-hgsrXKJU9DvzCU56 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hgsrXKJU9DvzCU56 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hgsrXKJU9DvzCU56 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hgsrXKJU9DvzCU56 .marker.cross{stroke:#333333;}#mermaid-svg-hgsrXKJU9DvzCU56 svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hgsrXKJU9DvzCU56 p{margin:0;}#mermaid-svg-hgsrXKJU9DvzCU56 .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-hgsrXKJU9DvzCU56 .cluster-label text{fill:#333;}#mermaid-svg-hgsrXKJU9DvzCU56 .cluster-label span{color:#333;}#mermaid-svg-hgsrXKJU9DvzCU56 .cluster-label span p{background-color:transparent;}#mermaid-svg-hgsrXKJU9DvzCU56 .label text,#mermaid-svg-hgsrXKJU9DvzCU56 span{fill:#333;color:#333;}#mermaid-svg-hgsrXKJU9DvzCU56 .node rect,#mermaid-svg-hgsrXKJU9DvzCU56 .node circle,#mermaid-svg-hgsrXKJU9DvzCU56 .node ellipse,#mermaid-svg-hgsrXKJU9DvzCU56 .node polygon,#mermaid-svg-hgsrXKJU9DvzCU56 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hgsrXKJU9DvzCU56 .rough-node .label text,#mermaid-svg-hgsrXKJU9DvzCU56 .node .label text,#mermaid-svg-hgsrXKJU9DvzCU56 .image-shape .label,#mermaid-svg-hgsrXKJU9DvzCU56 .icon-shape .label{text-anchor:middle;}#mermaid-svg-hgsrXKJU9DvzCU56 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-hgsrXKJU9DvzCU56 .rough-node .label,#mermaid-svg-hgsrXKJU9DvzCU56 .node .label,#mermaid-svg-hgsrXKJU9DvzCU56 .image-shape .label,#mermaid-svg-hgsrXKJU9DvzCU56 .icon-shape .label{text-align:center;}#mermaid-svg-hgsrXKJU9DvzCU56 .node.clickable{cursor:pointer;}#mermaid-svg-hgsrXKJU9DvzCU56 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-hgsrXKJU9DvzCU56 .arrowheadPath{fill:#333333;}#mermaid-svg-hgsrXKJU9DvzCU56 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hgsrXKJU9DvzCU56 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hgsrXKJU9DvzCU56 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hgsrXKJU9DvzCU56 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-hgsrXKJU9DvzCU56 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hgsrXKJU9DvzCU56 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-hgsrXKJU9DvzCU56 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hgsrXKJU9DvzCU56 .cluster text{fill:#333;}#mermaid-svg-hgsrXKJU9DvzCU56 .cluster span{color:#333;}#mermaid-svg-hgsrXKJU9DvzCU56 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hgsrXKJU9DvzCU56 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-hgsrXKJU9DvzCU56 rect.text{fill:none;stroke-width:0;}#mermaid-svg-hgsrXKJU9DvzCU56 .icon-shape,#mermaid-svg-hgsrXKJU9DvzCU56 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-hgsrXKJU9DvzCU56 .icon-shape p,#mermaid-svg-hgsrXKJU9DvzCU56 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-hgsrXKJU9DvzCU56 .icon-shape .label rect,#mermaid-svg-hgsrXKJU9DvzCU56 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-hgsrXKJU9DvzCU56 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-hgsrXKJU9DvzCU56 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-hgsrXKJU9DvzCU56 :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>LSD\u57fa\u6570\u6392\u5e8f&#xff08;\u4ece\u4e2a\u4f4d\u5230\u767e\u4f4d&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u539f\u59cb: [329, 457, 657, 839, 436, 720, 355]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6309\u4e2a\u4f4d\u6392\u5e8f:720(0) 355(5) 436(6) 457(7) 657(7) 329(9) 839(9)\u2192 [720, 355, 436, 457, 657, 329, 839]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6309\u5341\u4f4d\u6392\u5e8f:720(2) 329(2) 436(3) 839(3) 355(5) 457(5) 657(5)\u2192 [720, 329, 436, 839, 355, 457, 657]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6309\u767e\u4f4d\u6392\u5e8f:329(3) 355(3) 436(4) 457(4) 657(6) 720(7) 839(8)\u2192 [329, 355, 436, 457, 657, 720, 839]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5b8c\u6210: [329, 355, 436, 457, 657, 720, 839]<\/p>\n<p><\/span><\/p>\n<p>\u56fe8-2&#xff1a;LSD\u57fa\u6570\u6392\u5e8f\u2014\u2014\u4ece\u4e2a\u4f4d\u5230\u767e\u4f4d&#xff0c;\u6bcf\u8f6e\u7528\u8ba1\u6570\u6392\u5e8f\u6309\u5f53\u524d\u4f4d\u6392\u5e8f\u3002\u6ce8\u610f457\u548c657\u4e2a\u4f4d\u90fd\u4e3a7&#xff0c;\u7b2c1\u8f6e\u540e457\u5728\u524d657\u5728\u540e&#xff0c;\u540e\u7eed\u8f6e\u6b21\u5fc5\u987b\u4fdd\u6301\u8fd9\u4e2a\u987a\u5e8f&#xff08;\u7a33\u5b9a\u6027&#xff09;<\/p>\n<p>\u9a8c\u8bc1\u7a33\u5b9a\u6027&#xff1a;457\u548c657&#xff0c;\u4e2a\u4f4d\u90fd\u662f7\u3002\u7b2c1\u8f6e\u6309\u4e2a\u4f4d\u6392\u5e8f\u540e&#xff0c;457&#xff08;\u539f\u7d22\u5f151&#xff09;\u5728657&#xff08;\u539f\u7d22\u5f152&#xff09;\u524d\u9762\u3002\u540e\u7eed\u8f6e\u6b21\u4e2d\u5341\u4f4d5&#061;5\u3001\u767e\u4f4d4&lt;6&#xff0c;\u6392\u5e8f\u6b63\u786e\u3002\u5982\u679c\u67d0\u8f6e\u6392\u5e8f\u4e0d\u7a33\u5b9a&#xff0c;457\u548c657\u53ef\u80fd\u88ab\u53cd\u8f6c\u4e3a657\u5728\u524d\u3002<\/p>\n<h5>8.2.3 \u4ee3\u7801\u5b9e\u73b0<\/h5>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">radixSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&lt;&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u627e\u6700\u5927\u503c\u786e\u5b9a\u4f4d\u6570<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> max <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> num <span class=\"token operator\">:<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>num <span class=\"token operator\">&gt;<\/span> max<span class=\"token punctuation\">)<\/span> max <span class=\"token operator\">&#061;<\/span> num<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u4ece\u4e2a\u4f4d\u5230\u6700\u9ad8\u4f4d&#xff0c;\u6bcf\u4f4d\u7528\u8ba1\u6570\u6392\u5e8f<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> exp <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> max <span class=\"token operator\">\/<\/span> exp <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> exp <span class=\"token operator\">*&#061;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">countingSortByDigit<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> exp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token comment\">\/\/ \u6309\u7b2cexp\u4f4d\u8fdb\u884c\u8ba1\u6570\u6392\u5e8f<\/span><br \/>\n<span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">countingSortByDigit<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> exp<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> output <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span>n<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> count <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">10<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ 0-9<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u7edf\u8ba1\u5f53\u524d\u4f4d\u7684\u9891\u6b21<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> num <span class=\"token operator\">:<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> digit <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>num <span class=\"token operator\">\/<\/span> exp<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">%<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        count<span class=\"token punctuation\">[<\/span>digit<span class=\"token punctuation\">]<\/span><span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u524d\u7f00\u548c<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        count<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#043;&#061;<\/span> count<span class=\"token punctuation\">[<\/span>i <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u9006\u5e8f\u586b\u5145&#xff08;\u4fdd\u8bc1\u7a33\u5b9a\u6027&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> n <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&gt;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#8212;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> digit <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">\/<\/span> exp<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">%<\/span> <span class=\"token number\">10<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        output<span class=\"token punctuation\">[<\/span><span class=\"token operator\">&#8212;<\/span>count<span class=\"token punctuation\">[<\/span>digit<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">arraycopy<\/span><span class=\"token punctuation\">(<\/span>output<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h5>8.2.4 \u590d\u6742\u5ea6\u5206\u6790<\/h5>\n<ul>\n<li>\u65f6\u95f4&#xff1a;O(d \u00b7 (n &#043; k))&#xff0c;d\u4e3a\u6700\u5927\u4f4d\u6570&#xff0c;k\u4e3a\u57fa\u6570&#xff08;\u6b64\u5904k&#061;10&#xff09;\u3002\u5bf932\u4f4d\u6574\u6570&#xff0c;d\u6700\u591a10\u4f4d<\/li>\n<li>\u7a7a\u95f4&#xff1a;O(n &#043; k)<\/li>\n<li>\u7a33\u5b9a\u6027&#xff1a;\u7a33\u5b9a&#xff08;\u6bcf\u8f6e\u8ba1\u6570\u6392\u5e8f\u90fd\u662f\u7a33\u5b9a\u7684&#xff09;<\/li>\n<\/ul>\n<p>\u5f53 d \u4e3a\u5e38\u6570\u65f6&#xff08;\u5982\u56fa\u5b9a\u957f\u5ea6\u6574\u6570&#xff09;&#xff0c;\u57fa\u6570\u6392\u5e8f\u662f O(n) \u7684\u3002\u4f46\u5b9e\u9645\u4e2d d \u00b7 (n &#043; k) \u7684\u5e38\u6570\u56e0\u5b50\u53ef\u80fd\u4f7f\u5b83\u4e0d\u5982\u5feb\u6392\u5feb&#xff0c;\u7279\u522b\u662f\u5f53\u6570\u636e\u53ef\u4ee5\u7528\u6bd4\u8f83\u6392\u5e8f\u9ad8\u6548\u5904\u7406\u65f6\u3002<\/p>\n<p>\u57fa\u6570\u6392\u5e8f\u8fd8\u53ef\u4ee5\u7528\u4e8e\u5b57\u7b26\u4e32\u6392\u5e8f\u2014\u2014\u6309\u5b57\u7b26\u4ece\u540e\u5411\u524d&#xff08;\u6216\u4ece\u524d\u5411\u540e&#xff09;\u9010\u4f4d\u6392\u5e8f\u3002\u4f46\u5b57\u7b26\u4e32\u957f\u5ea6\u4e0d\u56fa\u5b9a&#xff0c;\u5904\u7406\u8f83\u590d\u6742\u3002<\/p>\n<h4>8.3 \u6876\u6392\u5e8f&#xff08;Bucket Sort&#xff09;<\/h4>\n<h5>8.3.1 \u6838\u5fc3\u601d\u60f3<\/h5>\n<p>\u6876\u6392\u5e8f\u628a\u6570\u636e\u6309\u503c\u57df\u5206\u5230\u82e5\u5e72\u4e2a&#034;\u6876&#034;\u4e2d&#xff0c;\u6bcf\u4e2a\u6876\u5185\u90e8\u5355\u72ec\u6392\u5e8f&#xff0c;\u7136\u540e\u4f9d\u6b21\u62fc\u63a5\u3002\u5f53\u6570\u636e\u5747\u5300\u5206\u5e03\u65f6&#xff0c;\u6bcf\u4e2a\u6876\u5185\u6570\u636e\u91cf\u5f88\u5c11&#xff08;\u5e73\u5747n\/k\u4e2a&#xff09;&#xff0c;\u6876\u5185\u6392\u5e8f\u5f88\u5feb&#xff0c;\u603b\u590d\u6742\u5ea6\u63a5\u8fd1 O(n)\u3002<\/p>\n<p>  #mermaid-svg-08eGkPhR88lVqKLH{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-08eGkPhR88lVqKLH .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-08eGkPhR88lVqKLH .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-08eGkPhR88lVqKLH .error-icon{fill:#552222;}#mermaid-svg-08eGkPhR88lVqKLH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-08eGkPhR88lVqKLH .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-08eGkPhR88lVqKLH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-08eGkPhR88lVqKLH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-08eGkPhR88lVqKLH .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-08eGkPhR88lVqKLH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-08eGkPhR88lVqKLH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-08eGkPhR88lVqKLH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-08eGkPhR88lVqKLH .marker.cross{stroke:#333333;}#mermaid-svg-08eGkPhR88lVqKLH svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-08eGkPhR88lVqKLH p{margin:0;}#mermaid-svg-08eGkPhR88lVqKLH .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-08eGkPhR88lVqKLH .cluster-label text{fill:#333;}#mermaid-svg-08eGkPhR88lVqKLH .cluster-label span{color:#333;}#mermaid-svg-08eGkPhR88lVqKLH .cluster-label span p{background-color:transparent;}#mermaid-svg-08eGkPhR88lVqKLH .label text,#mermaid-svg-08eGkPhR88lVqKLH span{fill:#333;color:#333;}#mermaid-svg-08eGkPhR88lVqKLH .node rect,#mermaid-svg-08eGkPhR88lVqKLH .node circle,#mermaid-svg-08eGkPhR88lVqKLH .node ellipse,#mermaid-svg-08eGkPhR88lVqKLH .node polygon,#mermaid-svg-08eGkPhR88lVqKLH .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-08eGkPhR88lVqKLH .rough-node .label text,#mermaid-svg-08eGkPhR88lVqKLH .node .label text,#mermaid-svg-08eGkPhR88lVqKLH .image-shape .label,#mermaid-svg-08eGkPhR88lVqKLH .icon-shape .label{text-anchor:middle;}#mermaid-svg-08eGkPhR88lVqKLH .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-08eGkPhR88lVqKLH .rough-node .label,#mermaid-svg-08eGkPhR88lVqKLH .node .label,#mermaid-svg-08eGkPhR88lVqKLH .image-shape .label,#mermaid-svg-08eGkPhR88lVqKLH .icon-shape .label{text-align:center;}#mermaid-svg-08eGkPhR88lVqKLH .node.clickable{cursor:pointer;}#mermaid-svg-08eGkPhR88lVqKLH .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-08eGkPhR88lVqKLH .arrowheadPath{fill:#333333;}#mermaid-svg-08eGkPhR88lVqKLH .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-08eGkPhR88lVqKLH .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-08eGkPhR88lVqKLH .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-08eGkPhR88lVqKLH .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-08eGkPhR88lVqKLH .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-08eGkPhR88lVqKLH .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-08eGkPhR88lVqKLH .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-08eGkPhR88lVqKLH .cluster text{fill:#333;}#mermaid-svg-08eGkPhR88lVqKLH .cluster span{color:#333;}#mermaid-svg-08eGkPhR88lVqKLH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-08eGkPhR88lVqKLH .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-08eGkPhR88lVqKLH rect.text{fill:none;stroke-width:0;}#mermaid-svg-08eGkPhR88lVqKLH .icon-shape,#mermaid-svg-08eGkPhR88lVqKLH .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-08eGkPhR88lVqKLH .icon-shape p,#mermaid-svg-08eGkPhR88lVqKLH .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-08eGkPhR88lVqKLH .icon-shape .label rect,#mermaid-svg-08eGkPhR88lVqKLH .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-08eGkPhR88lVqKLH .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-08eGkPhR88lVqKLH .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-08eGkPhR88lVqKLH :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6876\u6392\u5e8f\u8fc7\u7a0b [0.78, 0.17, 0.39, 0.26, 0.72, 0.94, 0.21, 0.12, 0.23, 0.68]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8f93\u5165: 10\u4e2a[0,1)\u7684\u6d6e\u70b9\u6570<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5206\u52305\u4e2a\u6876&#xff08;\u533a\u95f40.2&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u68760[0,0.2): [0.17, 0.12] \u2192 \u6392\u5e8f \u2192 [0.12, 0.17]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u68761[0.2,0.4): [0.26, 0.21, 0.23] \u2192 \u6392\u5e8f \u2192 [0.21, 0.23, 0.26]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u68762[0.4,0.6): [0.39] \u2192 \u5df2\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u68763[0.6,0.8): [0.78, 0.72, 0.68] \u2192 \u6392\u5e8f \u2192 [0.68, 0.72, 0.78]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u68764[0.8,1.0): [0.94] \u2192 \u5df2\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u62fc\u63a5: [0.12, 0.17, 0.21, 0.23, 0.26, 0.39, 0.68, 0.72, 0.78, 0.94]<\/p>\n<p><\/span><\/p>\n<p>\u56fe8-3&#xff1a;\u6876\u6392\u5e8f\u2014\u2014\u6309\u503c\u57df\u5206\u6876&#xff0c;\u6876\u5185\u6392\u5e8f\u540e\u62fc\u63a5\u3002\u6570\u636e\u5747\u5300\u5206\u5e03\u65f6\u6bcf\u4e2a\u6876\u7ea6n\/k\u4e2a\u5143\u7d20<\/p>\n<h5>8.3.2 \u4ee3\u7801\u5b9e\u73b0<\/h5>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">bucketSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">double<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> n <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>n <span class=\"token operator\">&lt;&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ 1. \u521b\u5efa\u6876<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> bucketCount <span class=\"token operator\">&#061;<\/span> n<span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u6876\u6570\u91cf\u7b49\u4e8e\u5143\u7d20\u6570\u91cf<\/span><br \/>\n    <span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">List<\/span><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">Double<\/span><span class=\"token punctuation\">&gt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> buckets <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;<\/span> bucketCount<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        buckets<span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ArrayList<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ 2. \u5206\u914d\u5143\u7d20\u5230\u6876\u4e2d<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">double<\/span> num <span class=\"token operator\">:<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> idx <span class=\"token operator\">&#061;<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">(<\/span>num <span class=\"token operator\">*<\/span> bucketCount<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u6620\u5c04\u5230\u6876\u7d22\u5f15<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>idx <span class=\"token operator\">&gt;&#061;<\/span> bucketCount<span class=\"token punctuation\">)<\/span> idx <span class=\"token operator\">&#061;<\/span> bucketCount <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5904\u7406\u4e0a\u754c<\/span><br \/>\n        buckets<span class=\"token punctuation\">.<\/span><span class=\"token function\">get<\/span><span class=\"token punctuation\">(<\/span>idx<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">add<\/span><span class=\"token punctuation\">(<\/span>num<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ 3. \u6bcf\u4e2a\u6876\u5185\u90e8\u6392\u5e8f&#xff08;\u7528\u63d2\u5165\u6392\u5e8f\u6216Collections.sort&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">Double<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> bucket <span class=\"token operator\">:<\/span> buckets<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token class-name\">Collections<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">sort<\/span><span class=\"token punctuation\">(<\/span>bucket<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u5b9e\u9645\u53ef\u7528\u63d2\u5165\u6392\u5e8f\u4f18\u5316\u5c0f\u6876<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ 4. \u4f9d\u6b21\u62fc\u63a5<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> idx <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">List<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">Double<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> bucket <span class=\"token operator\">:<\/span> buckets<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">double<\/span> num <span class=\"token operator\">:<\/span> bucket<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            arr<span class=\"token punctuation\">[<\/span>idx<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> num<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h5>8.3.3 \u590d\u6742\u5ea6\u5206\u6790<\/h5>\n<ul>\n<li>\u6700\u597d\/\u5e73\u5747&#xff1a;O(n &#043; k)&#xff0c;\u6570\u636e\u5747\u5300\u5206\u5e03\u65f6\u6bcf\u4e2a\u6876O(n\/k)\u4e2a\u5143\u7d20&#xff0c;k\u4e2a\u6876\u5171O(n)&#xff0c;\u6876\u5185\u6392\u5e8fO(n\/k \u00b7 log(n\/k))<\/li>\n<li>\u6700\u574f&#xff1a;O(n\u00b2)&#xff0c;\u6240\u6709\u6570\u636e\u96c6\u4e2d\u5230\u4e00\u4e2a\u6876&#xff0c;\u9000\u5316\u4e3a\u6876\u5185\u6392\u5e8f\u7684\u590d\u6742\u5ea6<\/li>\n<li>\u7a7a\u95f4&#xff1a;O(n &#043; k)<\/li>\n<li>\u7a33\u5b9a\u6027&#xff1a;\u53d6\u51b3\u4e8e\u6876\u5185\u6392\u5e8f\u7b97\u6cd5\u662f\u5426\u7a33\u5b9a\u3002\u7528\u7a33\u5b9a\u7684\u6392\u5e8f&#xff08;\u5982\u63d2\u5165\u6392\u5e8f\u3001\u5f52\u5e76\u6392\u5e8f&#xff09;\u5219\u6876\u6392\u5e8f\u7a33\u5b9a<\/li>\n<\/ul>\n<p>\u6876\u6392\u5e8f\u7684\u6027\u80fd\u9ad8\u5ea6\u4f9d\u8d56\u6570\u636e\u5206\u5e03\u3002\u5982\u679c\u6570\u636e\u5747\u5300\u5206\u5e03&#xff0c;\u662f\u6700\u5feb\u7684\u6392\u5e8f\u4e4b\u4e00\u3002\u5982\u679c\u5206\u5e03\u4e0d\u5747&#xff08;\u5982\u6570\u636e\u96c6\u4e2d\u5728\u67d0\u4e00\u533a\u95f4&#xff09;&#xff0c;\u6027\u80fd\u9000\u5316\u3002<\/p>\n<h4>8.4 \u975e\u6bd4\u8f83\u6392\u5e8f\u5bf9\u6bd4<\/h4>\n<table>\n<tr>\u7ef4\u5ea6\u8ba1\u6570\u6392\u5e8f\u57fa\u6570\u6392\u5e8f\u6876\u6392\u5e8f<\/tr>\n<tbody>\n<tr>\n<td>\u65f6\u95f4<\/td>\n<td>O(n&#043;k)<\/td>\n<td>O(d\u00b7n)<\/td>\n<td>O(n&#043;k)<\/td>\n<\/tr>\n<tr>\n<td>\u7a7a\u95f4<\/td>\n<td>O(n&#043;k)<\/td>\n<td>O(n&#043;k)<\/td>\n<td>O(n&#043;k)<\/td>\n<\/tr>\n<tr>\n<td>\u7a33\u5b9a<\/td>\n<td>\u2713<\/td>\n<td>\u2713<\/td>\n<td>\u53d6\u51b3\u4e8e\u6876\u5185\u6392\u5e8f<\/td>\n<\/tr>\n<tr>\n<td>\u8981\u6c42<\/td>\n<td>\u6574\u6570\u3001k\u5c0f<\/td>\n<td>\u6574\u6570\/\u5b9a\u957f\u5b57\u7b26\u4e32<\/td>\n<td>\u5747\u5300\u5206\u5e03<\/td>\n<\/tr>\n<tr>\n<td>\u6700\u574f<\/td>\n<td>O(n&#043;k)<\/td>\n<td>O(d\u00b7n)<\/td>\n<td>O(n\u00b2)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<hr \/>\n<h3>\u7b2c9\u7ae0 \u5de5\u7a0b\u5b9e\u8df5&#xff1a;TimSort\u3001IntroSort\u4e0e\u5e93\u5b9e\u73b0\u9009\u578b<\/h3>\n<p>\u524d\u97628\u7ae0\u8bb2\u89e3\u7684\u662f&#034;\u6559\u79d1\u4e66&#034;\u6392\u5e8f\u7b97\u6cd5\u3002\u5b9e\u9645\u5de5\u7a0b\u4e2d&#xff0c;\u4e3b\u6d41\u8bed\u8a00\u7684\u6807\u51c6\u5e93\u4e0d\u4f1a\u53ea\u7528\u4e00\u79cd\u6392\u5e8f\u7b97\u6cd5&#xff0c;\u800c\u662f\u91c7\u7528\u6df7\u5408\u7b56\u7565\u2014\u2014\u6839\u636e\u6570\u636e\u7279\u5f81\u52a8\u6001\u5207\u6362\u6700\u4f18\u7b97\u6cd5\u3002\u672c\u7ae0\u63ed\u79d8\u4e09\u5927\u4e3b\u6d41\u8bed\u8a00\u7684\u6392\u5e8f\u5e93\u5b9e\u73b0\u3002<\/p>\n<h4>9.1 TimSort&#xff1a;Python &amp; Java \u7684\u9009\u62e9<\/h4>\n<p>TimSort \u7531 Tim Peters \u4e8e2002\u5e74\u53d1\u660e&#xff0c;\u5e94\u7528\u4e8ePython\u7684sorted()\u548clist.sort()&#xff0c;\u4ee5\u53caJava 7&#043;\u7684Arrays.sort(Object[])&#xff08;\u5bf9\u8c61\u6570\u7ec4&#xff09;\u3002\u5b83\u662f\u5f52\u5e76\u6392\u5e8f &#043; \u63d2\u5165\u6392\u5e8f\u7684\u6df7\u5408\u4f53\u3002<\/p>\n<h5>9.1.1 \u6838\u5fc3\u601d\u60f3<\/h5>\n<p>TimSort \u7684\u5173\u952e\u6d1e\u5bdf\u662f&#xff1a;\u73b0\u5b9e\u6570\u636e\u5f80\u5f80\u90e8\u5206\u6709\u5e8f\u3002\u5b83\u901a\u8fc7\u68c0\u6d4b\u6570\u7ec4\u4e2d\u7684&#034;run&#034;&#xff08;\u8fde\u7eed\u9012\u589e\u6216\u9012\u51cf\u7684\u5b50\u5e8f\u5217&#xff09;\u6765\u5229\u7528\u5df2\u6709\u7684\u6709\u5e8f\u6027&#xff0c;\u51cf\u5c11\u6392\u5e8f\u5de5\u4f5c\u91cf\u3002<\/p>\n<p>  #mermaid-svg-E11UvL2HctxdSlBJ{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-E11UvL2HctxdSlBJ .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-E11UvL2HctxdSlBJ .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-E11UvL2HctxdSlBJ .error-icon{fill:#552222;}#mermaid-svg-E11UvL2HctxdSlBJ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-E11UvL2HctxdSlBJ .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-E11UvL2HctxdSlBJ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-E11UvL2HctxdSlBJ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-E11UvL2HctxdSlBJ .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-E11UvL2HctxdSlBJ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-E11UvL2HctxdSlBJ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-E11UvL2HctxdSlBJ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-E11UvL2HctxdSlBJ .marker.cross{stroke:#333333;}#mermaid-svg-E11UvL2HctxdSlBJ svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-E11UvL2HctxdSlBJ p{margin:0;}#mermaid-svg-E11UvL2HctxdSlBJ .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-E11UvL2HctxdSlBJ .cluster-label text{fill:#333;}#mermaid-svg-E11UvL2HctxdSlBJ .cluster-label span{color:#333;}#mermaid-svg-E11UvL2HctxdSlBJ .cluster-label span p{background-color:transparent;}#mermaid-svg-E11UvL2HctxdSlBJ .label text,#mermaid-svg-E11UvL2HctxdSlBJ span{fill:#333;color:#333;}#mermaid-svg-E11UvL2HctxdSlBJ .node rect,#mermaid-svg-E11UvL2HctxdSlBJ .node circle,#mermaid-svg-E11UvL2HctxdSlBJ .node ellipse,#mermaid-svg-E11UvL2HctxdSlBJ .node polygon,#mermaid-svg-E11UvL2HctxdSlBJ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-E11UvL2HctxdSlBJ .rough-node .label text,#mermaid-svg-E11UvL2HctxdSlBJ .node .label text,#mermaid-svg-E11UvL2HctxdSlBJ .image-shape .label,#mermaid-svg-E11UvL2HctxdSlBJ .icon-shape .label{text-anchor:middle;}#mermaid-svg-E11UvL2HctxdSlBJ .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-E11UvL2HctxdSlBJ .rough-node .label,#mermaid-svg-E11UvL2HctxdSlBJ .node .label,#mermaid-svg-E11UvL2HctxdSlBJ .image-shape .label,#mermaid-svg-E11UvL2HctxdSlBJ .icon-shape .label{text-align:center;}#mermaid-svg-E11UvL2HctxdSlBJ .node.clickable{cursor:pointer;}#mermaid-svg-E11UvL2HctxdSlBJ .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-E11UvL2HctxdSlBJ .arrowheadPath{fill:#333333;}#mermaid-svg-E11UvL2HctxdSlBJ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-E11UvL2HctxdSlBJ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-E11UvL2HctxdSlBJ .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-E11UvL2HctxdSlBJ .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-E11UvL2HctxdSlBJ .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-E11UvL2HctxdSlBJ .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-E11UvL2HctxdSlBJ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-E11UvL2HctxdSlBJ .cluster text{fill:#333;}#mermaid-svg-E11UvL2HctxdSlBJ .cluster span{color:#333;}#mermaid-svg-E11UvL2HctxdSlBJ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-E11UvL2HctxdSlBJ .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-E11UvL2HctxdSlBJ rect.text{fill:none;stroke-width:0;}#mermaid-svg-E11UvL2HctxdSlBJ .icon-shape,#mermaid-svg-E11UvL2HctxdSlBJ .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-E11UvL2HctxdSlBJ .icon-shape p,#mermaid-svg-E11UvL2HctxdSlBJ .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-E11UvL2HctxdSlBJ .icon-shape .label rect,#mermaid-svg-E11UvL2HctxdSlBJ .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-E11UvL2HctxdSlBJ .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-E11UvL2HctxdSlBJ .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-E11UvL2HctxdSlBJ :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>TimSort \u5de5\u4f5c\u6d41\u7a0b<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8f93\u5165\u6570\u7ec4<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>1. \u8bc6\u522bruns\u8fde\u7eed\u9012\u589e\/\u9012\u51cf\u7684\u5b50\u5e8f\u5217<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>2. \u53cd\u8f6c\u9012\u51cfruns\u4f7f\u5176\u9012\u589e<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>3. \u7528\u6808\u5408\u5e76runs\u7ef4\u6301\u6808\u9876\u4e09\u4e2arun\u7684\u4e0d\u53d8\u5f0f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>4. \u5c0frun&#xff08;&lt;32&#xff09;\u7528\u63d2\u5165\u6392\u5e8f\u6269\u5c55<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>5. \u6700\u7ec8\u5408\u5e76\u6240\u6709runs<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6709\u5e8f\u8f93\u51fa<\/p>\n<p><\/span><\/p>\n<p>\u56fe9-1&#xff1a;TimSort\u5de5\u4f5c\u6d41\u7a0b\u2014\u2014\u8bc6\u522b\u6709\u5e8f\u6bb5(runs)\u3001\u5c0f\u6bb5\u7528\u63d2\u5165\u6392\u5e8f\u3001\u5927\u6bb5\u7528\u5f52\u5e76\u5408\u5e76<\/p>\n<h5>9.1.2 \u5173\u952e\u4f18\u5316<\/h5>\n<p>\u4f18\u53161&#xff1a;Run\u8bc6\u522b\u4e0e\u5229\u7528<\/p>\n<p>TimSort\u626b\u63cf\u6570\u7ec4&#xff0c;\u627e\u5230\u8fde\u7eed\u9012\u589e\u6216\u9012\u51cf\u7684\u5b50\u5e8f\u5217&#xff08;\u79f0\u4e3arun&#xff09;\u3002\u9012\u51cf\u7684run\u88ab\u53cd\u8f6c\u6210\u9012\u589e\u3002\u4e00\u4e2a\u957f\u5ea6\u4e3an\u7684\u5b8c\u5168\u6709\u5e8f\u6570\u7ec4\u5c31\u662f\u4e00\u4e2a\u957f\u5ea6\u4e3an\u7684run\u2014\u2014\u76f4\u63a5\u8df3\u8fc7\u6392\u5e8f&#xff0c;\u56e0\u6b64TimSort\u5bf9\u5df2\u6709\u5e8f\u6570\u636e\u662fO(n)\u3002<\/p>\n<p>\u4f18\u53162&#xff1a;\u6700\u5c0frun\u957f\u5ea6&#xff08;minRun&#xff09;<\/p>\n<p>TimSort\u8bbe\u5b9a\u4e00\u4e2a\u6700\u5c0frun\u957f\u5ea6&#xff08;\u901a\u5e3832-64&#xff09;\u3002\u5982\u679c\u627e\u5230\u7684run\u77ed\u4e8eminRun&#xff0c;\u7528\u63d2\u5165\u6392\u5e8f\u6269\u5c55\u5b83\u3002\u8fd9\u5229\u7528\u4e86\u63d2\u5165\u6392\u5e8f\u5bf9\u5c0f\u6570\u7ec4\u6781\u5feb\u7684\u7279\u6027\u3002<\/p>\n<p>\u4f18\u53163&#xff1a;\u5408\u5e76\u6808\u4e0e\u4e0d\u53d8\u5f0f<\/p>\n<p>TimSort\u7ef4\u62a4\u4e00\u4e2arun\u6808&#xff0c;\u7528\u7c7b\u4f3c\u5f52\u5e76\u6392\u5e8f\u7684\u65b9\u5f0f\u5408\u5e76\u3002\u4f46\u5408\u5e76\u7b56\u7565\u66f4\u7cbe\u7ec6\u2014\u2014\u7ef4\u6301\u6808\u9ad8\u4e09\u4e2arun\u6ee1\u8db3 len(top-2) &gt; len(top-1) &#043; len(top) \u548c len(top-1) &gt; len(top) \u7684\u4e0d\u53d8\u5f0f&#xff0c;\u4fdd\u8bc1\u5408\u5e76\u7684\u5e73\u8861\u6027&#xff0c;\u907f\u514d\u9000\u5316\u3002<\/p>\n<p>\u4f18\u53164&#xff1a;Galloping Mode&#xff08;\u98de\u5954\u6a21\u5f0f&#xff09;<\/p>\n<p>\u5f53\u5408\u5e76\u4e24\u4e2arun\u65f6&#xff0c;\u5982\u679c\u4e00\u4fa7\u8fde\u7eed\u591a\u6b21&#034;\u80dc\u51fa&#034;&#xff08;\u67d0\u4e2arun\u7684\u5143\u7d20\u8fde\u7eed\u88ab\u9009\u5165\u7ed3\u679c&#xff09;&#xff0c;\u5207\u6362\u5230galloping\u6a21\u5f0f\u2014\u2014\u7528\u4e8c\u5206\u67e5\u627e\u4e00\u6b21\u6027\u627e\u5230\u4e00\u5927\u6279\u5e94\u8be5\u6765\u81ea\u540c\u4e00\u4fa7\u7684\u5143\u7d20&#xff0c;\u51cf\u5c11\u9010\u4e2a\u6bd4\u8f83\u7684\u5f00\u9500\u3002<\/p>\n<h5>9.1.3 \u590d\u6742\u5ea6<\/h5>\n<table>\n<tr>\u60c5\u51b5\u590d\u6742\u5ea6\u8bf4\u660e<\/tr>\n<tbody>\n<tr>\n<td>\u6700\u597d<\/td>\n<td>O(n)<\/td>\n<td>\u5df2\u6709\u5e8f\u6570\u7ec4&#xff0c;\u4e00\u4e2arun\u76f4\u63a5\u8fd4\u56de<\/td>\n<\/tr>\n<tr>\n<td>\u5e73\u5747<\/td>\n<td>O(n log n)<\/td>\n<td>\u6807\u51c6\u60c5\u51b5<\/td>\n<\/tr>\n<tr>\n<td>\u6700\u574f<\/td>\n<td>O(n log n)<\/td>\n<td>\u65e0\u6709\u5e8f\u6027&#xff0c;\u9000\u5316\u4e3a\u5f52\u5e76\u6392\u5e8f<\/td>\n<\/tr>\n<tr>\n<td>\u7a7a\u95f4<\/td>\n<td>O(n)<\/td>\n<td>\u8f85\u52a9\u6570\u7ec4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>TimSort\u662f\u7a33\u5b9a\u6392\u5e8f&#xff0c;\u8fd9\u662fPython\u548cJava\u9009\u62e9\u5b83\u800c\u975e\u5feb\u6392\u7684\u4e3b\u8981\u539f\u56e0\u2014\u2014\u5bf9\u8c61\u6392\u5e8f\u901a\u5e38\u9700\u8981\u7a33\u5b9a\u6027&#xff08;\u5982\u5148\u6309\u5e74\u9f84\u6392\u5e8f\u518d\u6309\u59d3\u540d\u6392\u5e8f&#xff09;\u3002<\/p>\n<h4>9.2 IntroSort&#xff1a;C&#043;&#043; STL \u7684\u9009\u62e9<\/h4>\n<p>IntroSort&#xff08;\u5185\u7701\u6392\u5e8f&#xff09;\u7531 David Musser \u4e8e1997\u5e74\u63d0\u51fa&#xff0c;\u5e94\u7528\u4e8eC&#043;&#043; STL\u7684std::sort\u3002\u5b83\u662f\u5feb\u901f\u6392\u5e8f &#043; \u5806\u6392\u5e8f &#043; \u63d2\u5165\u6392\u5e8f\u7684\u4e09\u5408\u4e00\u3002<\/p>\n<h5>9.2.1 \u6838\u5fc3\u601d\u60f3<\/h5>\n<p>IntroSort\u4ee5\u5feb\u6392\u4e3a\u4e3b&#xff0c;\u4f46\u6709\u4e24\u4e2a\u5b89\u5168\u9600&#xff1a;<\/p>\n<li>\u5f53\u9012\u5f52\u6df1\u5ea6\u8d85\u8fc7\u9608\u503c&#xff08;2\u00b7log\u2082n&#xff09;\u65f6\u5207\u6362\u4e3a\u5806\u6392\u5e8f\u2014\u2014\u4fdd\u8bc1\u6700\u574fO(n log n)<\/li>\n<li>\u5f53\u5b50\u6570\u7ec4\u5c0f\u4e8e\u9608\u503c&#xff08;\u901a\u5e3816&#xff09;\u65f6\u5207\u6362\u4e3a\u63d2\u5165\u6392\u5e8f\u2014\u2014\u5229\u7528\u5c0f\u6570\u7ec4\u4f18\u52bf<\/li>\n<p>  #mermaid-svg-BxL0yai2PPkwpwp4{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-BxL0yai2PPkwpwp4 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-BxL0yai2PPkwpwp4 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-BxL0yai2PPkwpwp4 .error-icon{fill:#552222;}#mermaid-svg-BxL0yai2PPkwpwp4 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-BxL0yai2PPkwpwp4 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-BxL0yai2PPkwpwp4 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-BxL0yai2PPkwpwp4 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-BxL0yai2PPkwpwp4 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-BxL0yai2PPkwpwp4 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-BxL0yai2PPkwpwp4 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-BxL0yai2PPkwpwp4 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-BxL0yai2PPkwpwp4 .marker.cross{stroke:#333333;}#mermaid-svg-BxL0yai2PPkwpwp4 svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-BxL0yai2PPkwpwp4 p{margin:0;}#mermaid-svg-BxL0yai2PPkwpwp4 .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-BxL0yai2PPkwpwp4 .cluster-label text{fill:#333;}#mermaid-svg-BxL0yai2PPkwpwp4 .cluster-label span{color:#333;}#mermaid-svg-BxL0yai2PPkwpwp4 .cluster-label span p{background-color:transparent;}#mermaid-svg-BxL0yai2PPkwpwp4 .label text,#mermaid-svg-BxL0yai2PPkwpwp4 span{fill:#333;color:#333;}#mermaid-svg-BxL0yai2PPkwpwp4 .node rect,#mermaid-svg-BxL0yai2PPkwpwp4 .node circle,#mermaid-svg-BxL0yai2PPkwpwp4 .node ellipse,#mermaid-svg-BxL0yai2PPkwpwp4 .node polygon,#mermaid-svg-BxL0yai2PPkwpwp4 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-BxL0yai2PPkwpwp4 .rough-node .label text,#mermaid-svg-BxL0yai2PPkwpwp4 .node .label text,#mermaid-svg-BxL0yai2PPkwpwp4 .image-shape .label,#mermaid-svg-BxL0yai2PPkwpwp4 .icon-shape .label{text-anchor:middle;}#mermaid-svg-BxL0yai2PPkwpwp4 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-BxL0yai2PPkwpwp4 .rough-node .label,#mermaid-svg-BxL0yai2PPkwpwp4 .node .label,#mermaid-svg-BxL0yai2PPkwpwp4 .image-shape .label,#mermaid-svg-BxL0yai2PPkwpwp4 .icon-shape .label{text-align:center;}#mermaid-svg-BxL0yai2PPkwpwp4 .node.clickable{cursor:pointer;}#mermaid-svg-BxL0yai2PPkwpwp4 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-BxL0yai2PPkwpwp4 .arrowheadPath{fill:#333333;}#mermaid-svg-BxL0yai2PPkwpwp4 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-BxL0yai2PPkwpwp4 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-BxL0yai2PPkwpwp4 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BxL0yai2PPkwpwp4 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-BxL0yai2PPkwpwp4 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BxL0yai2PPkwpwp4 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-BxL0yai2PPkwpwp4 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-BxL0yai2PPkwpwp4 .cluster text{fill:#333;}#mermaid-svg-BxL0yai2PPkwpwp4 .cluster span{color:#333;}#mermaid-svg-BxL0yai2PPkwpwp4 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-BxL0yai2PPkwpwp4 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-BxL0yai2PPkwpwp4 rect.text{fill:none;stroke-width:0;}#mermaid-svg-BxL0yai2PPkwpwp4 .icon-shape,#mermaid-svg-BxL0yai2PPkwpwp4 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-BxL0yai2PPkwpwp4 .icon-shape p,#mermaid-svg-BxL0yai2PPkwpwp4 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-BxL0yai2PPkwpwp4 .icon-shape .label rect,#mermaid-svg-BxL0yai2PPkwpwp4 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-BxL0yai2PPkwpwp4 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-BxL0yai2PPkwpwp4 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-BxL0yai2PPkwpwp4 :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>IntroSort \u51b3\u7b56\u6d41\u7a0b<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u5426<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/p>\n<p>\u5426<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8f93\u5165 n<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>n &lt; 16?<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u63d2\u5165\u6392\u5e8fO(n\u00b2)\u4f46\u5e38\u6570\u5c0f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u9012\u5f52\u6df1\u5ea6 &gt; 2log\u2082n?<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5806\u6392\u5e8f\u4fdd\u8bc1O(n log n)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5feb\u901f\u6392\u5e8f\u4e09\u6570\u53d6\u4e2dpivot<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5206\u533a\u540e\u9012\u5f52<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5b8c\u6210<\/p>\n<p><\/span><\/p>\n<p>\u56fe9-2&#xff1a;IntroSort\u6df7\u5408\u7b56\u7565\u2014\u2014\u6b63\u5e38\u7528\u5feb\u6392&#xff08;\u84dd&#xff09;&#xff0c;\u6df1\u5ea6\u8d85\u9650\u5207\u5806\u6392&#xff08;\u6a59&#xff09;&#xff0c;\u5c0f\u533a\u95f4\u5207\u63d2\u5165\u6392\u5e8f&#xff08;\u7eff&#xff09;<\/p>\n<h5>9.2.2 \u4e3a\u4ec0\u4e48\u8fd9\u6837\u8bbe\u8ba1<\/h5>\n<ul>\n<li>\u5feb\u6392\u6253\u5e95&#xff1a;\u5927\u591a\u6570\u60c5\u51b5\u4e0b\u5feb\u6392\u6700\u5feb&#xff08;\u7f13\u5b58\u53cb\u597d\u3001\u5e38\u6570\u56e0\u5b50\u5c0f&#xff09;&#xff0c;\u4f5c\u4e3a\u4e3b\u7b97\u6cd5<\/li>\n<li>\u5806\u6392\u515c\u5e95&#xff1a;\u5feb\u6392\u6700\u574fO(n\u00b2)&#xff0c;\u7528\u9012\u5f52\u6df1\u5ea6\u68c0\u6d4b\u4f55\u65f6\u5feb\u6392\u8981\u9000\u5316&#xff0c;\u53ca\u65f6\u5207\u5230\u5806\u6392<\/li>\n<li>\u63d2\u5165\u6392\u5e8f\u6536\u5c3e&#xff1a;\u5c0f\u533a\u57df\u5185\u5feb\u6392\u7684\u9012\u5f52\u5f00\u9500\u4e0d\u503c\u5f53&#xff0c;\u5207\u6362\u5230\u63d2\u5165\u6392\u5e8f\u66f4\u9ad8\u6548<\/li>\n<\/ul>\n<p>IntroSort\u662f\u4e0d\u7a33\u5b9a\u6392\u5e8f\u2014\u2014\u5feb\u6392\u548c\u5806\u6392\u90fd\u4e0d\u7a33\u5b9a\u3002C&#043;&#043; STL\u53e6\u5916\u63d0\u4f9b\u4e86std::stable_sort&#xff08;\u57fa\u4e8e\u5f52\u5e76\u6392\u5e8f&#xff09;&#xff0c;\u9700\u8981\u7a33\u5b9a\u6027\u65f6\u4f7f\u7528\u3002<\/p>\n<h4>9.3 \u5404\u8bed\u8a00\u6807\u51c6\u5e93\u6392\u5e8f\u5b9e\u73b0<\/h4>\n<table>\n<tr>\u8bed\u8a00\u6392\u5e8f\u51fd\u6570\u7b97\u6cd5\u7a33\u5b9a\u6027\u6700\u574f\u590d\u6742\u5ea6<\/tr>\n<tbody>\n<tr>\n<td>C<\/td>\n<td>qsort()<\/td>\n<td>\u901a\u5e38\u5feb\u6392<\/td>\n<td>\u4e0d\u7a33\u5b9a<\/td>\n<td>O(n\u00b2)<\/td>\n<\/tr>\n<tr>\n<td>C&#043;&#043;<\/td>\n<td>std::sort()<\/td>\n<td>IntroSort<\/td>\n<td>\u4e0d\u7a33\u5b9a<\/td>\n<td>O(n log n)<\/td>\n<\/tr>\n<tr>\n<td>C&#043;&#043;<\/td>\n<td>std::stable_sort()<\/td>\n<td>\u5f52\u5e76\u6392\u5e8f<\/td>\n<td>\u7a33\u5b9a<\/td>\n<td>O(n log n)<\/td>\n<\/tr>\n<tr>\n<td>Java<\/td>\n<td>Arrays.sort(int[])<\/td>\n<td>Dual-Pivot\u5feb\u6392<\/td>\n<td>\u4e0d\u7a33\u5b9a<\/td>\n<td>O(n\u00b2)<\/td>\n<\/tr>\n<tr>\n<td>Java<\/td>\n<td>Arrays.sort(Object[])<\/td>\n<td>TimSort<\/td>\n<td>\u7a33\u5b9a<\/td>\n<td>O(n log n)<\/td>\n<\/tr>\n<tr>\n<td>Python<\/td>\n<td>sorted()\/list.sort()<\/td>\n<td>TimSort<\/td>\n<td>\u7a33\u5b9a<\/td>\n<td>O(n log n)<\/td>\n<\/tr>\n<tr>\n<td>Go<\/td>\n<td>sort.Ints()<\/td>\n<td>pdqsort<\/td>\n<td>\u4e0d\u7a33\u5b9a<\/td>\n<td>O(n log n)<\/td>\n<\/tr>\n<tr>\n<td>Rust<\/td>\n<td>sort_unstable()<\/td>\n<td>pdqsort<\/td>\n<td>\u4e0d\u7a33\u5b9a<\/td>\n<td>O(n log n)<\/td>\n<\/tr>\n<tr>\n<td>Rust<\/td>\n<td>sort()<\/td>\n<td>TimSort<\/td>\n<td>\u7a33\u5b9a<\/td>\n<td>O(n log n)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\u88689-1&#xff1a;\u4e3b\u6d41\u8bed\u8a00\u6392\u5e8f\u5e93\u5b9e\u73b0\u2014\u2014\u5bf9\u8c61\/\u7a33\u5b9a\u9700\u6c42\u7528TimSort\/\u5f52\u5e76&#xff0c;\u57fa\u672c\u7c7b\u578b\u7528\u5feb\u6392\u53d8\u4f53<\/p>\n<p>\u4e3a\u4ec0\u4e48Java\u5bf9\u57fa\u672c\u7c7b\u578b\u548c\u5bf9\u8c61\u7528\u4e0d\u540c\u6392\u5e8f&#xff1a;<\/p>\n<li>\u57fa\u672c\u7c7b\u578b\u7528\u5feb\u6392&#xff08;\u4e0d\u7a33\u5b9a&#xff09;&#xff1a;\u57fa\u672c\u7c7b\u578b\u6ca1\u6709&#034;\u76f8\u7b49\u4f46\u4e0d\u540c&#034;\u7684\u6982\u5ff5&#xff08;\u4e24\u4e2a5\u5b8c\u5168\u76f8\u540c&#xff09;&#xff0c;\u7a33\u5b9a\u6027\u65e0\u610f\u4e49&#xff0c;\u5feb\u6392\u66f4\u5feb<\/li>\n<li>\u5bf9\u8c61\u7528TimSort&#xff08;\u7a33\u5b9a&#xff09;&#xff1a;\u5bf9\u8c61\u6709identity&#xff08;\u4e24\u4e2a&#034;\u76f8\u7b49&#034;\u7684Student\u662f\u4e0d\u540c\u5bf9\u8c61&#xff09;&#xff0c;\u6392\u5e8f\u9700\u8981\u4fdd\u6301\u76f8\u5bf9\u987a\u5e8f&#xff1b;TimSort\u5229\u7528\u90e8\u5206\u6709\u5e8f\u6027&#xff0c;\u5bf9\u73b0\u5b9e\u6570\u636e\u66f4\u53cb\u597d<\/li>\n<h4>9.4 \u5de5\u7a0b\u9009\u578b\u51b3\u7b56\u6811<\/h4>\n<p>  #mermaid-svg-7rupYoBFR6BFRfqS{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-7rupYoBFR6BFRfqS .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-7rupYoBFR6BFRfqS .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-7rupYoBFR6BFRfqS .error-icon{fill:#552222;}#mermaid-svg-7rupYoBFR6BFRfqS .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-7rupYoBFR6BFRfqS .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-7rupYoBFR6BFRfqS .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-7rupYoBFR6BFRfqS .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-7rupYoBFR6BFRfqS .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-7rupYoBFR6BFRfqS .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-7rupYoBFR6BFRfqS .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-7rupYoBFR6BFRfqS .marker{fill:#333333;stroke:#333333;}#mermaid-svg-7rupYoBFR6BFRfqS .marker.cross{stroke:#333333;}#mermaid-svg-7rupYoBFR6BFRfqS svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-7rupYoBFR6BFRfqS p{margin:0;}#mermaid-svg-7rupYoBFR6BFRfqS .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-7rupYoBFR6BFRfqS .cluster-label text{fill:#333;}#mermaid-svg-7rupYoBFR6BFRfqS .cluster-label span{color:#333;}#mermaid-svg-7rupYoBFR6BFRfqS .cluster-label span p{background-color:transparent;}#mermaid-svg-7rupYoBFR6BFRfqS .label text,#mermaid-svg-7rupYoBFR6BFRfqS span{fill:#333;color:#333;}#mermaid-svg-7rupYoBFR6BFRfqS .node rect,#mermaid-svg-7rupYoBFR6BFRfqS .node circle,#mermaid-svg-7rupYoBFR6BFRfqS .node ellipse,#mermaid-svg-7rupYoBFR6BFRfqS .node polygon,#mermaid-svg-7rupYoBFR6BFRfqS .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-7rupYoBFR6BFRfqS .rough-node .label text,#mermaid-svg-7rupYoBFR6BFRfqS .node .label text,#mermaid-svg-7rupYoBFR6BFRfqS .image-shape .label,#mermaid-svg-7rupYoBFR6BFRfqS .icon-shape .label{text-anchor:middle;}#mermaid-svg-7rupYoBFR6BFRfqS .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-7rupYoBFR6BFRfqS .rough-node .label,#mermaid-svg-7rupYoBFR6BFRfqS .node .label,#mermaid-svg-7rupYoBFR6BFRfqS .image-shape .label,#mermaid-svg-7rupYoBFR6BFRfqS .icon-shape .label{text-align:center;}#mermaid-svg-7rupYoBFR6BFRfqS .node.clickable{cursor:pointer;}#mermaid-svg-7rupYoBFR6BFRfqS .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-7rupYoBFR6BFRfqS .arrowheadPath{fill:#333333;}#mermaid-svg-7rupYoBFR6BFRfqS .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-7rupYoBFR6BFRfqS .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-7rupYoBFR6BFRfqS .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7rupYoBFR6BFRfqS .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-7rupYoBFR6BFRfqS .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7rupYoBFR6BFRfqS .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-7rupYoBFR6BFRfqS .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-7rupYoBFR6BFRfqS .cluster text{fill:#333;}#mermaid-svg-7rupYoBFR6BFRfqS .cluster span{color:#333;}#mermaid-svg-7rupYoBFR6BFRfqS div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-7rupYoBFR6BFRfqS .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-7rupYoBFR6BFRfqS rect.text{fill:none;stroke-width:0;}#mermaid-svg-7rupYoBFR6BFRfqS .icon-shape,#mermaid-svg-7rupYoBFR6BFRfqS .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-7rupYoBFR6BFRfqS .icon-shape p,#mermaid-svg-7rupYoBFR6BFRfqS .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-7rupYoBFR6BFRfqS .icon-shape .label rect,#mermaid-svg-7rupYoBFR6BFRfqS .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-7rupYoBFR6BFRfqS .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-7rupYoBFR6BFRfqS .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-7rupYoBFR6BFRfqS :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>         <span class=\"edgeLabel\"><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>n &lt; 47<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>47 \u2264 n<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u5426<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u5426<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u5426<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u5426<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>n &gt; \u5185\u5b58\u5bb9\u91cf<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u662f<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"edgeLabel\"><\/p>\n<p>\u5426 \u4e14\u5747\u5300\u5206\u5e03<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6392\u5e8f\u9700\u6c42<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6570\u636e\u91cf?<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u63d2\u5165\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u9700\u8981\u7a33\u5b9a?<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5185\u5b58\u53d7\u9650?<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u7a33\u5b9a\u5feb\u6392&#xff08;\u9700\u989d\u5916\u7a7a\u95f4&#xff09;<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>TimSort \/ \u5f52\u5e76\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5185\u5b58\u53d7\u9650?<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5806\u6392\u5e8f O(1)\u7a7a\u95f4<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6570\u636e\u8fd1\u4e4e\u6709\u5e8f?<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u63d2\u5165\u6392\u5e8f&#xff08;O(n)&#xff09;<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5feb\u6392 \/ IntroSort<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u5916\u90e8\u5f52\u5e76\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u53d6\u503c\u8303\u56f4\u5c0f?<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u8ba1\u6570\u6392\u5e8f O(n&#043;k)<\/p>\n<p><\/span><\/p>\n<p>         <span class=\"nodeLabel\"><\/p>\n<p>\u6876\u6392\u5e8f<\/p>\n<p><\/span><\/p>\n<p>\u56fe9-3&#xff1a;\u5de5\u7a0b\u6392\u5e8f\u9009\u578b\u51b3\u7b56\u6811\u2014\u2014\u6839\u636e\u6570\u636e\u91cf\u3001\u7a33\u5b9a\u6027\u9700\u6c42\u3001\u5185\u5b58\u7ea6\u675f\u9009\u62e9\u6700\u4f18\u7b97\u6cd5<\/p>\n<hr \/>\n<h3>\u7b2c10\u7ae0 \u9762\u8bd5\u9ad8\u9891\u9898\u578b\u4e0e\u5b9e\u6218\u603b\u7ed3<\/h3>\n<h4>10.1 \u9898\u578b\u4e00&#xff1a;\u624b\u5199\u6392\u5e8f\u7b97\u6cd5<\/h4>\n<p>\u8003\u70b9&#xff1a;\u5feb\u901f\u6392\u5e8f\u7684 partition\u3001\u5f52\u5e76\u6392\u5e8f\u7684 merge \u662f\u6700\u9ad8\u9891\u7684\u624b\u5199\u9898\u3002<\/p>\n<p>\u4f8b\u9898&#xff1a;\u624b\u5199\u5feb\u901f\u6392\u5e8f&#xff08;\u8981\u6c42\u4e09\u6570\u53d6\u4e2d &#043; \u5c0f\u533a\u95f4\u63d2\u5165\u6392\u5e8f\u4f18\u5316&#xff09;\u3002<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">quickSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token function\">quickSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> arr<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">quickSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u4f18\u53161: \u5c0f\u533a\u95f4\u7528\u63d2\u5165\u6392\u5e8f<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>hi <span class=\"token operator\">&#8211;<\/span> lo <span class=\"token operator\">&lt;<\/span> <span class=\"token number\">16<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token function\">insertionSortRange<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token comment\">\/\/ \u4f18\u53162: \u4e09\u6570\u53d6\u4e2d\u9009pivot<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> mid <span class=\"token operator\">&#061;<\/span> lo <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>hi <span class=\"token operator\">&#8211;<\/span> lo<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>lo<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>mid<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>lo<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>hi<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>mid<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> arr<span class=\"token punctuation\">[<\/span>hi<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u4e2d\u4f4d\u6570\u653e\u5230arr[hi]<\/span><\/p>\n<p>    <span class=\"token comment\">\/\/ \u4f18\u53163: \u4e09\u8def\u5206\u533a&#xff08;\u5904\u7406\u5927\u91cf\u91cd\u590d\u5143\u7d20&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> pivot <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>hi<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> lt <span class=\"token operator\">&#061;<\/span> lo<span class=\"token punctuation\">,<\/span> gt <span class=\"token operator\">&#061;<\/span> hi<span class=\"token punctuation\">,<\/span> i <span class=\"token operator\">&#061;<\/span> lo<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&lt;&#061;<\/span> gt<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;<\/span> pivot<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lt<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">,<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> pivot<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> i<span class=\"token punctuation\">,<\/span> gt<span class=\"token operator\">&#8212;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token comment\">\/\/ arr[lo..lt-1] &lt; pivot, arr[lt..gt] &#061;&#061; pivot, arr[gt&#043;1..hi] &gt; pivot<\/span><br \/>\n    <span class=\"token function\">quickSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> lt <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">quickSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> gt <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">insertionSortRange<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> lo <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span> i <span class=\"token operator\">&lt;&#061;<\/span> hi<span class=\"token punctuation\">;<\/span> i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> key <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">int<\/span> j <span class=\"token operator\">&#061;<\/span> i <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>j <span class=\"token operator\">&gt;&#061;<\/span> lo <span class=\"token operator\">&amp;&amp;<\/span> arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&gt;<\/span> key<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> arr<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            j<span class=\"token operator\">&#8212;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n        arr<span class=\"token punctuation\">[<\/span>j <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> key<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u4e09\u8def\u5206\u533a&#xff08;Dutch National Flag&#xff09;\u7684\u4f18\u52bf&#xff1a;\u5f53\u6709\u5927\u91cf\u91cd\u590d\u5143\u7d20\u65f6&#xff0c;\u6807\u51c6\u5feb\u6392&#xff08;\u4e8c\u8def&#xff09;\u4f1a\u628a\u76f8\u7b49\u7684\u5143\u7d20\u5206\u6563\u5230\u4e24\u8fb9&#xff0c;\u91cd\u590d\u9012\u5f52\u5904\u7406\u3002\u4e09\u8def\u5206\u533a\u628a\u76f8\u7b49\u7684\u5143\u7d20\u96c6\u4e2d\u5230\u4e2d\u95f4&#xff0c;\u53ea\u9012\u5f52\u5904\u7406 &lt; pivot \u548c &gt; pivot \u7684\u90e8\u5206&#xff0c;\u5bf9\u5927\u91cf\u91cd\u590d\u6570\u636e\u6548\u7387\u663e\u8457\u63d0\u5347\u3002<\/p>\n<h4>10.2 \u9898\u578b\u4e8c&#xff1a;Top-K \u95ee\u9898<\/h4>\n<p>\u4f8b\u9898&#xff1a;LeetCode 215. \u6570\u7ec4\u4e2d\u7684\u7b2cK\u4e2a\u6700\u5927\u5143\u7d20\u3002<\/p>\n<p>\u4e09\u79cd\u89e3\u6cd5&#xff0c;\u590d\u6742\u5ea6\u9012\u51cf&#xff1a;<\/p>\n<p>\u89e3\u6cd51&#xff1a;\u6392\u5e8f \u2014 \u5148\u6392\u5e8f\u518d\u53d6\u7b2ck\u4e2a&#xff0c;O(n log n)\u3002\u7b80\u5355\u4f46\u4e0d\u5145\u5206\u5229\u7528\u95ee\u9898\u7ed3\u6784\u3002<\/p>\n<p>\u89e3\u6cd52&#xff1a;\u5806 \u2014 \u7ef4\u62a4\u5927\u5c0fk\u7684\u5c0f\u9876\u5806&#xff0c;O(n log k)\u3002\u5df2\u5728\u7b2c7\u7ae0\u7ed9\u51fa\u4ee3\u7801\u3002<\/p>\n<p>\u89e3\u6cd53&#xff1a;\u5feb\u901f\u9009\u62e9&#xff08;QuickSelect&#xff09; \u2014 \u5229\u7528\u5feb\u6392\u7684partition&#xff0c;\u53ea\u9012\u5f52\u5305\u542b\u7b2ck\u5927\u7684\u4e00\u4fa7&#xff0c;\u5e73\u5747O(n)\u3002<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token function\">findKthLargest<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> nums<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> k<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> target <span class=\"token operator\">&#061;<\/span> nums<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#8211;<\/span> k<span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u7b2ck\u5927 &#061; \u7b2c(n-k)\u5c0f&#xff08;0-indexed&#xff09;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">quickSelect<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> nums<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> target<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">static<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token function\">quickSelect<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> target<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>lo <span class=\"token operator\">&#061;&#061;<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> arr<span class=\"token punctuation\">[<\/span>lo<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p>    <span class=\"token keyword\">int<\/span> p <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">partition<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ Lomuto\u5206\u533a<\/span><\/p>\n<p>    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>p <span class=\"token operator\">&#061;&#061;<\/span> target<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> arr<span class=\"token punctuation\">[<\/span>p<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span>           <span class=\"token comment\">\/\/ pivot\u6070\u597d\u662f\u76ee\u6807\u4f4d\u7f6e<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>p <span class=\"token operator\">&lt;<\/span> target<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token function\">quickSelect<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> p <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">,<\/span> target<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u53ea\u9012\u5f52\u53f3\u534a<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">return<\/span> <span class=\"token function\">quickSelect<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> p <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> target<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>  <span class=\"token comment\">\/\/ \u53ea\u9012\u5f52\u5de6\u534a<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>QuickSelect\u4e3a\u4ec0\u4e48\u662fO(n)&#xff1a;\u6bcf\u6b21\u53ea\u9012\u5f52\u4e00\u4fa7&#xff08;\u4e0d\u50cf\u5feb\u6392\u4e24\u4fa7\u90fd\u9012\u5f52&#xff09;&#xff0c;T(n) &#061; T(n\/2) &#043; O(n) &#061; O(n) &#043; O(n\/2) &#043; O(n\/4) &#043; \u2026 &#061; O(2n) &#061; O(n)\u3002\u4f46\u6700\u574f\u60c5\u51b5O(n\u00b2)&#xff08;pivot\u9009\u62e9\u5dee&#xff09;&#xff0c;\u53ef\u4ee5\u7528&#034;\u4e2d\u4f4d\u6570\u7684\u4e2d\u4f4d\u6570&#034;&#xff08;BFPRT\u7b97\u6cd5&#xff09;\u4fdd\u8bc1\u6700\u574fO(n)&#xff0c;\u4f46\u5e38\u6570\u592a\u5927\u5b9e\u9645\u5f88\u5c11\u7528\u3002<\/p>\n<h4>10.3 \u9898\u578b\u4e09&#xff1a;\u5408\u5e76\u6709\u5e8f\u6570\u7ec4\/\u94fe\u8868<\/h4>\n<p>\u4f8b\u9898&#xff1a;LeetCode 23. \u5408\u5e76K\u4e2a\u5347\u5e8f\u94fe\u8868\u3002<\/p>\n<p>\u89e3\u6cd51&#xff1a;\u9010\u4e00\u5408\u5e76 \u2014 \u4f9d\u6b21\u5408\u5e76\u6bcf\u4e2a\u94fe\u8868&#xff0c;O(kN)&#xff08;k\u4e3a\u94fe\u8868\u6570&#xff0c;N\u4e3a\u603b\u8282\u70b9\u6570&#xff09;\u3002<\/p>\n<p>\u89e3\u6cd52&#xff1a;\u5206\u6cbb\u5408\u5e76 \u2014 \u4e24\u4e24\u914d\u5bf9\u5408\u5e76&#xff0c;O(N log k)\u3002<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">ListNode<\/span> <span class=\"token function\">mergeKLists<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ListNode<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> lists<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>lists <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token keyword\">null<\/span> <span class=\"token operator\">||<\/span> lists<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">merge<\/span><span class=\"token punctuation\">(<\/span>lists<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> lists<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token class-name\">ListNode<\/span> <span class=\"token function\">merge<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ListNode<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> lists<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>lo <span class=\"token operator\">&#061;&#061;<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span> lists<span class=\"token punctuation\">[<\/span>lo<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> mid <span class=\"token operator\">&#061;<\/span> lo <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>hi <span class=\"token operator\">&#8211;<\/span> lo<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token class-name\">ListNode<\/span> left <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">merge<\/span><span class=\"token punctuation\">(<\/span>lists<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token class-name\">ListNode<\/span> right <span class=\"token operator\">&#061;<\/span> <span class=\"token function\">merge<\/span><span class=\"token punctuation\">(<\/span>lists<span class=\"token punctuation\">,<\/span> mid <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> <span class=\"token function\">mergeTwoLists<\/span><span class=\"token punctuation\">(<\/span>left<span class=\"token punctuation\">,<\/span> right<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u89e3\u6cd53&#xff1a;\u6700\u5c0f\u5806 \u2014 \u628a\u6bcf\u4e2a\u94fe\u8868\u7684\u5934\u8282\u70b9\u653e\u5165\u5c0f\u9876\u5806&#xff0c;\u6bcf\u6b21\u53d6\u6700\u5c0f&#xff0c;\u653e\u5165\u8be5\u8282\u70b9\u540e\u5c06\u5176\u540e\u7ee7\u5165\u5806\u3002O(N log k)\u3002<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token class-name\">ListNode<\/span> <span class=\"token function\">mergeKLists<\/span><span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ListNode<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> lists<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">PriorityQueue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token class-name\">ListNode<\/span><span class=\"token punctuation\">&gt;<\/span><\/span> pq <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">PriorityQueue<\/span><span class=\"token generics\"><span class=\"token punctuation\">&lt;<\/span><span class=\"token punctuation\">&gt;<\/span><\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>a<span class=\"token punctuation\">,<\/span> b<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-&gt;<\/span> a<span class=\"token punctuation\">.<\/span>val <span class=\"token operator\">&#8211;<\/span> b<span class=\"token punctuation\">.<\/span>val<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">for<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token class-name\">ListNode<\/span> node <span class=\"token operator\">:<\/span> lists<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>node <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> pq<span class=\"token punctuation\">.<\/span><span class=\"token function\">offer<\/span><span class=\"token punctuation\">(<\/span>node<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token class-name\">ListNode<\/span> dummy <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token class-name\">ListNode<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token class-name\">ListNode<\/span> cur <span class=\"token operator\">&#061;<\/span> dummy<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token operator\">!<\/span>pq<span class=\"token punctuation\">.<\/span><span class=\"token function\">isEmpty<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token class-name\">ListNode<\/span> node <span class=\"token operator\">&#061;<\/span> pq<span class=\"token punctuation\">.<\/span><span class=\"token function\">poll<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        cur<span class=\"token punctuation\">.<\/span>next <span class=\"token operator\">&#061;<\/span> node<span class=\"token punctuation\">;<\/span><br \/>\n        cur <span class=\"token operator\">&#061;<\/span> cur<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>node<span class=\"token punctuation\">.<\/span>next <span class=\"token operator\">!&#061;<\/span> <span class=\"token keyword\">null<\/span><span class=\"token punctuation\">)<\/span> pq<span class=\"token punctuation\">.<\/span><span class=\"token function\">offer<\/span><span class=\"token punctuation\">(<\/span>node<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> dummy<span class=\"token punctuation\">.<\/span>next<span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<h4>10.4 \u9898\u578b\u56db&#xff1a;\u9006\u5e8f\u5bf9\u8ba1\u6570<\/h4>\n<p>\u4f8b\u9898&#xff1a;LeetCode LCR 170. \u6570\u7ec4\u4e2d\u7684\u9006\u5e8f\u5bf9\u3002<\/p>\n<p>\u66b4\u529b\u6cd5O(n\u00b2)\u4f1a\u8d85\u65f6\u3002\u7ecf\u5178\u89e3\u6cd5\u662f\u7528\u5f52\u5e76\u6392\u5e8f\u7edf\u8ba1\u9006\u5e8f\u5bf9&#xff0c;O(n log n)\u3002<\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">int<\/span> count <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">int<\/span> <span class=\"token function\">reversePairs<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> nums<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    count <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> temp <span class=\"token operator\">&#061;<\/span> <span class=\"token keyword\">new<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span>nums<span class=\"token punctuation\">.<\/span>length<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">mergeSort<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> nums<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">return<\/span> count<span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">mergeSort<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> temp<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>lo <span class=\"token operator\">&gt;&#061;<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">return<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> mid <span class=\"token operator\">&#061;<\/span> lo <span class=\"token operator\">&#043;<\/span> <span class=\"token punctuation\">(<\/span>hi <span class=\"token operator\">&#8211;<\/span> lo<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">mergeSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">mergeSort<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> mid <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token function\">mergeAndCount<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">,<\/span> hi<span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p><span class=\"token keyword\">private<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">mergeAndCount<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> arr<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> lo<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> mid<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span> hi<span class=\"token punctuation\">,<\/span> <span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> temp<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token class-name\">System<\/span><span class=\"token punctuation\">.<\/span><span class=\"token function\">arraycopy<\/span><span class=\"token punctuation\">(<\/span>arr<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> temp<span class=\"token punctuation\">,<\/span> lo<span class=\"token punctuation\">,<\/span> hi <span class=\"token operator\">&#8211;<\/span> lo <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> i <span class=\"token operator\">&#061;<\/span> lo<span class=\"token punctuation\">,<\/span> j <span class=\"token operator\">&#061;<\/span> mid <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> k <span class=\"token operator\">&#061;<\/span> lo<span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&lt;&#061;<\/span> mid <span class=\"token operator\">&amp;&amp;<\/span> j <span class=\"token operator\">&lt;&#061;<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>temp<span class=\"token punctuation\">[<\/span>i<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&lt;&#061;<\/span> temp<span class=\"token punctuation\">[<\/span>j<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            arr<span class=\"token punctuation\">[<\/span>k<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">[<\/span>i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token comment\">\/\/ temp[i..mid] \u5168\u90e8 &gt; temp[j]&#xff0c;\u6784\u6210\u9006\u5e8f\u5bf9<\/span><br \/>\n            count <span class=\"token operator\">&#043;&#061;<\/span> mid <span class=\"token operator\">&#8211;<\/span> i <span class=\"token operator\">&#043;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n            arr<span class=\"token punctuation\">[<\/span>k<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">[<\/span>j<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>i <span class=\"token operator\">&lt;&#061;<\/span> mid<span class=\"token punctuation\">)<\/span> arr<span class=\"token punctuation\">[<\/span>k<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">[<\/span>i<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>j <span class=\"token operator\">&lt;&#061;<\/span> hi<span class=\"token punctuation\">)<\/span> arr<span class=\"token punctuation\">[<\/span>k<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;<\/span> temp<span class=\"token punctuation\">[<\/span>j<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">;<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>\u5173\u952e\u6d1e\u5bdf&#xff1a;\u5728merge\u8fc7\u7a0b\u4e2d&#xff0c;\u5f53\u53f3\u534a\u7684 temp[j] \u5c0f\u4e8e\u5de6\u534a\u7684 temp[i] \u65f6&#xff0c;temp[i..mid] \u7684\u6240\u6709\u5143\u7d20\u90fd\u5927\u4e8e temp[j]&#xff08;\u56e0\u4e3a\u5de6\u534a\u5df2\u6709\u5e8f&#xff09;&#xff0c;\u5f62\u6210 mid &#8211; i &#043; 1 \u4e2a\u9006\u5e8f\u5bf9\u3002\u8fd9\u5c31\u662f\u5f52\u5e76\u6392\u5e8f\u7edf\u8ba1\u9006\u5e8f\u5bf9\u7684\u6838\u5fc3\u3002<\/p>\n<h4>10.5 \u9898\u578b\u4e94&#xff1a;\u8377\u5170\u56fd\u65d7\u95ee\u9898<\/h4>\n<p>\u4f8b\u9898&#xff1a;LeetCode 75. \u989c\u8272\u5206\u7c7b&#xff08;0\u30011\u30012\u6392\u5e8f&#xff09;\u3002<\/p>\n<p>\u4e09\u8def\u5206\u533a\u7684\u7ecf\u5178\u5e94\u7528&#xff0c;O(n) \u4e00\u6b21\u904d\u5386\u5b8c\u6210&#xff1a;<\/p>\n<p><span class=\"token keyword\">public<\/span> <span class=\"token keyword\">void<\/span> <span class=\"token function\">sortColors<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">int<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span> nums<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n    <span class=\"token keyword\">int<\/span> lo <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> mid <span class=\"token operator\">&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">,<\/span> hi <span class=\"token operator\">&#061;<\/span> nums<span class=\"token punctuation\">.<\/span>length <span class=\"token operator\">&#8211;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">;<\/span><br \/>\n    <span class=\"token keyword\">while<\/span> <span class=\"token punctuation\">(<\/span>mid <span class=\"token operator\">&lt;&#061;<\/span> hi<span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n        <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">[<\/span>mid<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">,<\/span> lo<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">,<\/span> mid<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">[<\/span>mid<span class=\"token punctuation\">]<\/span> <span class=\"token operator\">&#061;&#061;<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token punctuation\">{<\/span><br \/>\n            mid<span class=\"token operator\">&#043;&#043;<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token punctuation\">{<\/span>  <span class=\"token comment\">\/\/ nums[mid] &#061;&#061; 2<\/span><br \/>\n            <span class=\"token function\">swap<\/span><span class=\"token punctuation\">(<\/span>nums<span class=\"token punctuation\">,<\/span> mid<span class=\"token punctuation\">,<\/span> hi<span class=\"token operator\">&#8212;<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span><br \/>\n        <span class=\"token punctuation\">}<\/span><br \/>\n    <span class=\"token punctuation\">}<\/span><br \/>\n<span class=\"token punctuation\">}<\/span><\/p>\n<p>  #mermaid-svg-uQFNIcFpT7ZGpcLU{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-uQFNIcFpT7ZGpcLU .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-uQFNIcFpT7ZGpcLU .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-uQFNIcFpT7ZGpcLU .error-icon{fill:#552222;}#mermaid-svg-uQFNIcFpT7ZGpcLU .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-uQFNIcFpT7ZGpcLU .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-uQFNIcFpT7ZGpcLU .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-uQFNIcFpT7ZGpcLU .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-uQFNIcFpT7ZGpcLU .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-uQFNIcFpT7ZGpcLU .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-uQFNIcFpT7ZGpcLU .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-uQFNIcFpT7ZGpcLU .marker{fill:#333333;stroke:#333333;}#mermaid-svg-uQFNIcFpT7ZGpcLU .marker.cross{stroke:#333333;}#mermaid-svg-uQFNIcFpT7ZGpcLU svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-uQFNIcFpT7ZGpcLU p{margin:0;}#mermaid-svg-uQFNIcFpT7ZGpcLU .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-uQFNIcFpT7ZGpcLU .cluster-label text{fill:#333;}#mermaid-svg-uQFNIcFpT7ZGpcLU .cluster-label span{color:#333;}#mermaid-svg-uQFNIcFpT7ZGpcLU .cluster-label span p{background-color:transparent;}#mermaid-svg-uQFNIcFpT7ZGpcLU .label text,#mermaid-svg-uQFNIcFpT7ZGpcLU span{fill:#333;color:#333;}#mermaid-svg-uQFNIcFpT7ZGpcLU .node rect,#mermaid-svg-uQFNIcFpT7ZGpcLU .node circle,#mermaid-svg-uQFNIcFpT7ZGpcLU .node ellipse,#mermaid-svg-uQFNIcFpT7ZGpcLU .node polygon,#mermaid-svg-uQFNIcFpT7ZGpcLU .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-uQFNIcFpT7ZGpcLU .rough-node .label text,#mermaid-svg-uQFNIcFpT7ZGpcLU .node .label text,#mermaid-svg-uQFNIcFpT7ZGpcLU .image-shape .label,#mermaid-svg-uQFNIcFpT7ZGpcLU .icon-shape .label{text-anchor:middle;}#mermaid-svg-uQFNIcFpT7ZGpcLU .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-uQFNIcFpT7ZGpcLU .rough-node .label,#mermaid-svg-uQFNIcFpT7ZGpcLU .node .label,#mermaid-svg-uQFNIcFpT7ZGpcLU .image-shape .label,#mermaid-svg-uQFNIcFpT7ZGpcLU .icon-shape .label{text-align:center;}#mermaid-svg-uQFNIcFpT7ZGpcLU .node.clickable{cursor:pointer;}#mermaid-svg-uQFNIcFpT7ZGpcLU .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-uQFNIcFpT7ZGpcLU .arrowheadPath{fill:#333333;}#mermaid-svg-uQFNIcFpT7ZGpcLU .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-uQFNIcFpT7ZGpcLU .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-uQFNIcFpT7ZGpcLU .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-uQFNIcFpT7ZGpcLU .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-uQFNIcFpT7ZGpcLU .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-uQFNIcFpT7ZGpcLU .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-uQFNIcFpT7ZGpcLU .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-uQFNIcFpT7ZGpcLU .cluster text{fill:#333;}#mermaid-svg-uQFNIcFpT7ZGpcLU .cluster span{color:#333;}#mermaid-svg-uQFNIcFpT7ZGpcLU div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-uQFNIcFpT7ZGpcLU .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-uQFNIcFpT7ZGpcLU rect.text{fill:none;stroke-width:0;}#mermaid-svg-uQFNIcFpT7ZGpcLU .icon-shape,#mermaid-svg-uQFNIcFpT7ZGpcLU .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-uQFNIcFpT7ZGpcLU .icon-shape p,#mermaid-svg-uQFNIcFpT7ZGpcLU .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-uQFNIcFpT7ZGpcLU .icon-shape .label rect,#mermaid-svg-uQFNIcFpT7ZGpcLU .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-uQFNIcFpT7ZGpcLU .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-uQFNIcFpT7ZGpcLU .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-uQFNIcFpT7ZGpcLU :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u4e09\u8def\u5206\u533a&#xff08;\u8377\u5170\u56fd\u65d7&#xff09;<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>[0,0,&#8230;,0 | 1,1,&#8230;,1 | ? ? ? | 2,2,&#8230;,2]<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>lo: 0\u7684\u53f3\u8fb9\u754c<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>mid: \u5f53\u524d\u626b\u63cf\u4f4d\u7f6e<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>hi: 2\u7684\u5de6\u8fb9\u754c<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>lo..mid-1: \u5168\u662f1mid..hi: \u672a\u5904\u7406\u533a\u57df<\/p>\n<p><\/span><\/p>\n<p>\u56fe10-1&#xff1a;\u8377\u5170\u56fd\u65d7\u95ee\u9898\u4e09\u8def\u5206\u533a\u2014\u2014\u7528\u4e09\u4e2a\u6307\u9488\u5212\u52060\u30011\u30012\u4e09\u4e2a\u533a\u57df<\/p>\n<h4>10.6 \u9762\u8bd5\u901f\u8bb0\u603b\u7ed3\u8868<\/h4>\n<table>\n<tr>\u9898\u578b\u6838\u5fc3\u7b97\u6cd5\u590d\u6742\u5ea6\u5173\u952e\u70b9<\/tr>\n<tbody>\n<tr>\n<td>\u624b\u5199\u5feb\u6392<\/td>\n<td>\u5feb\u6392&#043;\u4e09\u8def\u5206\u533a<\/td>\n<td>O(n log n)<\/td>\n<td>\u4e09\u6570\u53d6\u4e2d\u3001\u5c0f\u533a\u95f4\u63d2\u5165\u6392\u5e8f<\/td>\n<\/tr>\n<tr>\n<td>Top-K<\/td>\n<td>QuickSelect \/ \u5806<\/td>\n<td>O(n) \/ O(n log k)<\/td>\n<td>QuickSelect\u53ea\u9012\u5f52\u4e00\u4fa7<\/td>\n<\/tr>\n<tr>\n<td>\u5408\u5e76K\u4e2a\u6709\u5e8f\u94fe\u8868<\/td>\n<td>\u5206\u6cbb \/ \u6700\u5c0f\u5806<\/td>\n<td>O(N log k)<\/td>\n<td>\u5806\u4e2d\u59cb\u7ec8\u7ef4\u62a4k\u4e2a\u5019\u9009<\/td>\n<\/tr>\n<tr>\n<td>\u9006\u5e8f\u5bf9\u8ba1\u6570<\/td>\n<td>\u5f52\u5e76\u6392\u5e8f<\/td>\n<td>O(n log n)<\/td>\n<td>merge\u65f6\u53f3\u534a\u5c0f\u5219\u52a0\u9006\u5e8f\u5bf9<\/td>\n<\/tr>\n<tr>\n<td>\u8377\u5170\u56fd\u65d7<\/td>\n<td>\u4e09\u8def\u5206\u533a<\/td>\n<td>O(n)<\/td>\n<td>\u4e09\u6307\u9488\u5212\u52060\/1\/2<\/td>\n<\/tr>\n<tr>\n<td>\u533a\u95f4\u5408\u5e76<\/td>\n<td>\u6392\u5e8f&#043;\u8d2a\u5fc3<\/td>\n<td>O(n log n)<\/td>\n<td>\u6309\u5de6\u7aef\u70b9\u6392\u5e8f\u540e\u5408\u5e76<\/td>\n<\/tr>\n<tr>\n<td>\u63d2\u5165\u533a\u95f4<\/td>\n<td>\u6709\u5e8f\u904d\u5386<\/td>\n<td>O(n)<\/td>\n<td>\u5904\u7406\u5de6\/\u53f3\/\u5305\u542b\/\u4e0d\u76f8\u4ea4\u56db\u79cd\u60c5\u51b5<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>10.7 \u5168\u6587\u6838\u5fc3\u77e5\u8bc6\u70b9\u56de\u987e<\/h4>\n<p>  #mermaid-svg-mrSj8cejXdw9UNXb{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-mrSj8cejXdw9UNXb .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-mrSj8cejXdw9UNXb .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-mrSj8cejXdw9UNXb .error-icon{fill:#552222;}#mermaid-svg-mrSj8cejXdw9UNXb .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-mrSj8cejXdw9UNXb .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-mrSj8cejXdw9UNXb .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-mrSj8cejXdw9UNXb .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-mrSj8cejXdw9UNXb .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-mrSj8cejXdw9UNXb .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-mrSj8cejXdw9UNXb .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-mrSj8cejXdw9UNXb .marker{fill:#333333;stroke:#333333;}#mermaid-svg-mrSj8cejXdw9UNXb .marker.cross{stroke:#333333;}#mermaid-svg-mrSj8cejXdw9UNXb svg{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-mrSj8cejXdw9UNXb p{margin:0;}#mermaid-svg-mrSj8cejXdw9UNXb .label{font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;color:#333;}#mermaid-svg-mrSj8cejXdw9UNXb .cluster-label text{fill:#333;}#mermaid-svg-mrSj8cejXdw9UNXb .cluster-label span{color:#333;}#mermaid-svg-mrSj8cejXdw9UNXb .cluster-label span p{background-color:transparent;}#mermaid-svg-mrSj8cejXdw9UNXb .label text,#mermaid-svg-mrSj8cejXdw9UNXb span{fill:#333;color:#333;}#mermaid-svg-mrSj8cejXdw9UNXb .node rect,#mermaid-svg-mrSj8cejXdw9UNXb .node circle,#mermaid-svg-mrSj8cejXdw9UNXb .node ellipse,#mermaid-svg-mrSj8cejXdw9UNXb .node polygon,#mermaid-svg-mrSj8cejXdw9UNXb .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-mrSj8cejXdw9UNXb .rough-node .label text,#mermaid-svg-mrSj8cejXdw9UNXb .node .label text,#mermaid-svg-mrSj8cejXdw9UNXb .image-shape .label,#mermaid-svg-mrSj8cejXdw9UNXb .icon-shape .label{text-anchor:middle;}#mermaid-svg-mrSj8cejXdw9UNXb .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-mrSj8cejXdw9UNXb .rough-node .label,#mermaid-svg-mrSj8cejXdw9UNXb .node .label,#mermaid-svg-mrSj8cejXdw9UNXb .image-shape .label,#mermaid-svg-mrSj8cejXdw9UNXb .icon-shape .label{text-align:center;}#mermaid-svg-mrSj8cejXdw9UNXb .node.clickable{cursor:pointer;}#mermaid-svg-mrSj8cejXdw9UNXb .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-mrSj8cejXdw9UNXb .arrowheadPath{fill:#333333;}#mermaid-svg-mrSj8cejXdw9UNXb .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-mrSj8cejXdw9UNXb .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-mrSj8cejXdw9UNXb .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mrSj8cejXdw9UNXb .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-mrSj8cejXdw9UNXb .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mrSj8cejXdw9UNXb .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-mrSj8cejXdw9UNXb .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-mrSj8cejXdw9UNXb .cluster text{fill:#333;}#mermaid-svg-mrSj8cejXdw9UNXb .cluster span{color:#333;}#mermaid-svg-mrSj8cejXdw9UNXb div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-mrSj8cejXdw9UNXb .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-mrSj8cejXdw9UNXb rect.text{fill:none;stroke-width:0;}#mermaid-svg-mrSj8cejXdw9UNXb .icon-shape,#mermaid-svg-mrSj8cejXdw9UNXb .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-mrSj8cejXdw9UNXb .icon-shape p,#mermaid-svg-mrSj8cejXdw9UNXb .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-mrSj8cejXdw9UNXb .icon-shape .label rect,#mermaid-svg-mrSj8cejXdw9UNXb .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-mrSj8cejXdw9UNXb .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-mrSj8cejXdw9UNXb .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-mrSj8cejXdw9UNXb :root{&#8211;mermaid-font-family:\\&#8221;trebuchet ms\\&#8221;,verdana,arial,sans-serif;}<\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6392\u5e8f\u7b97\u6cd5\u77e5\u8bc6\u4f53\u7cfb<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"edgeLabel\"><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6392\u5e8f\u7b97\u6cd5<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6bd4\u8f83\u6392\u5e8f O(n log n)\u4e0b\u754c<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u975e\u6bd4\u8f83\u6392\u5e8f O(n)\u53ef\u7a81\u7834<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>O(n\u00b2): \u5192\u6ce1\/\u9009\u62e9\/\u63d2\u5165<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>O(n log n): \u5f52\u5e76\/\u5feb\u6392\/\u5806\u6392<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5192\u6ce1: \u7a33\u5b9a, \u4f18\u5316\u540e\u6700\u597dO(n)<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u9009\u62e9: \u4e0d\u7a33\u5b9a, \u4ea4\u6362\u6700\u5c11<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u63d2\u5165: \u7a33\u5b9a, \u5c0f\u6570\u7ec4\u738b\u8005<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5f52\u5e76: \u7a33\u5b9a, \u5916\u90e8\u6392\u5e8f\/\u94fe\u8868\u9996\u9009<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5feb\u6392: \u4e0d\u7a33\u5b9a, \u5b9e\u9645\u6700\u5feb<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5806\u6392: \u4e0d\u7a33\u5b9a, Top-K\u9996\u9009<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u8ba1\u6570: \u6574\u6570&#043;\u8303\u56f4\u5c0f<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u57fa\u6570: \u5b9a\u957f\u6570\u5b57\/\u5b57\u7b26\u4e32<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u6876: \u5747\u5300\u5206\u5e03<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>\u5de5\u7a0b\u6df7\u5408\u7b56\u7565<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>TimSort: \u5f52\u5e76&#043;\u63d2\u5165, \u7a33\u5b9a<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>IntroSort: \u5feb\u6392&#043;\u5806\u6392&#043;\u63d2\u5165, \u4e0d\u7a33\u5b9a<\/p>\n<p><\/span><\/p>\n<p>           <span class=\"nodeLabel\"><\/p>\n<p>pdqsort: \u5feb\u6392&#043;\u5806\u6392&#043;\u63d2\u5165, Rust\/Go<\/p>\n<p><\/span><\/p>\n<p>\u56fe10-2&#xff1a;\u6392\u5e8f\u7b97\u6cd5\u77e5\u8bc6\u4f53\u7cfb\u5168\u666f\u56de\u987e<\/p>\n<h4>10.8 \u4e00\u53e5\u8bdd\u8bb0\u4f4f\u6bcf\u4e2a\u7b97\u6cd5<\/h4>\n<ul>\n<li>\u5192\u6ce1&#xff1a;\u76f8\u90bb\u4ea4\u6362&#xff0c;\u7a33\u5b9a&#xff0c;\u6700\u597dO(n)<\/li>\n<li>\u9009\u62e9&#xff1a;\u627e\u6700\u5c0f\u503c\u4ea4\u6362&#xff0c;\u4e0d\u7a33\u5b9a&#xff0c;\u4ea4\u6362\u6700\u5c11<\/li>\n<li>\u63d2\u5165&#xff1a;\u6251\u514b\u724c\u63d2\u5165&#xff0c;\u7a33\u5b9a&#xff0c;\u5c0f\u6570\u7ec4\u6700\u5feb<\/li>\n<li>\u5f52\u5e76&#xff1a;\u5206\u6cbb\u5408\u5e76&#xff0c;\u7a33\u5b9a&#xff0c;\u5916\u90e8\u6392\u5e8f\u9996\u9009<\/li>\n<li>\u5feb\u6392&#xff1a;\u5206\u533a\u9012\u5f52&#xff0c;\u4e0d\u7a33\u5b9a&#xff0c;\u5b9e\u9645\u6700\u5feb<\/li>\n<li>\u5806\u6392&#xff1a;\u5efa\u5806\u53d6\u9876&#xff0c;\u4e0d\u7a33\u5b9a&#xff0c;Top-K\u9996\u9009<\/li>\n<li>\u8ba1\u6570&#xff1a;\u7edf\u8ba1\u9891\u6b21&#xff0c;\u7a33\u5b9a&#xff0c;\u8303\u56f4\u5c0f\u624d\u7528<\/li>\n<li>\u57fa\u6570&#xff1a;\u6309\u4f4d\u6392\u5e8f&#xff0c;\u7a33\u5b9a&#xff0c;\u6574\u6570\/\u5b57\u7b26\u4e32<\/li>\n<li>\u6876\u6392&#xff1a;\u5206\u6876\u6392\u5e8f&#xff0c;\u7a33\u5b9a&#xff0c;\u5747\u5300\u5206\u5e03\u624d\u5feb<\/li>\n<\/ul>\n<hr \/>\n<p>\u5168\u6587\u5b8c\u3002 \u672c\u6587\u8986\u76d6\u4e869\u79cd\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u7684\u539f\u7406\u3001\u6267\u884c\u8fc7\u7a0b\u56fe\u89e3\u3001\u590d\u6742\u5ea6\u63a8\u5bfc\u3001\u7a33\u5b9a\u6027\u8bc1\u660e\u548c\u5de5\u7a0b\u5e94\u7528&#xff0c;\u4ee5\u53ca\u4e09\u5927\u4e3b\u6d41\u8bed\u8a00\u7684\u5e93\u5b9e\u73b0\u9009\u578b\u3002\u5982\u679c\u5bf9\u4f60\u6709\u5e2e\u52a9&#xff0c;\u6b22\u8fce\u70b9\u8d5e\u6536\u85cf\u3002<\/p>\n<hr \/>\n","protected":false},"excerpt":{"rendered":"<p>\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3&#xff1a;\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357 \u672c\u6587\u4ece\u6392\u5e8f\u7b97\u6cd5\u7684\u5206\u7c7b\u4e0e\u6838\u5fc3\u6982\u5ff5\u8bb2\u8d77&#xff0c;\u9010\u4e2a\u62c6\u89e38\u79cd\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u7684\u6267\u884c\u8fc7\u7a0b\u3001\u590d\u6742\u5ea6\u63a8\u5bfc\u4e0e\u7a33\u5b9a\u6027\u8bc1\u660e&#xff0c;\u6700\u540e\u843d\u5230\u5de5\u7a0b\u5b9e\u8df5&#xff08;TimSort\u3001IntroSort&#xff09;\u548c\u9762\u8bd5\u9ad8\u9891\u9898\u578b\u3002\u6bcf\u4e2a\u7b97\u6cd5\u914d\u6709 Mermaid \u6d41\u7a0b\u56fe\u89e3&#xff0c;\u529b\u6c42\u8bb2\u6e05\\&#8221;\u4e3a\u4ec0\u4e48\\&#8221;\u800c\u975e\u7f57\u5217\u7ed3\u8bba\u3002 \u76ee\u5f55<br \/>\n\u7b2c1\u7ae0 \u6392\u5e8f\u7b97\u6cd5\u5168\u666f&#xff1a;\u5206\u7c7b\u3001\u7a33\u5b9a\u6027\u4e0e\u590d\u6742\u5ea6\u4e0b\u754c\u7b2c2\u7ae0 \u5192\u6ce1\u6392\u5e8f&#xff1a;\u4ece\u6734\u7d20\u5230\u4f18<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[10336,3226,427],"topic":[],"class_list":["post-94067","post","type-post","status-publish","format-standard","hentry","category-server","tag-10336","tag-3226","tag-427"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3\uff1a\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.wsisp.com\/helps\/94067.html\" \/>\n<meta property=\"og:locale\" content=\"zh_CN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3\uff1a\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"og:description\" content=\"\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3&#xff1a;\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357 \u672c\u6587\u4ece\u6392\u5e8f\u7b97\u6cd5\u7684\u5206\u7c7b\u4e0e\u6838\u5fc3\u6982\u5ff5\u8bb2\u8d77&#xff0c;\u9010\u4e2a\u62c6\u89e38\u79cd\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u7684\u6267\u884c\u8fc7\u7a0b\u3001\u590d\u6742\u5ea6\u63a8\u5bfc\u4e0e\u7a33\u5b9a\u6027\u8bc1\u660e&#xff0c;\u6700\u540e\u843d\u5230\u5de5\u7a0b\u5b9e\u8df5&#xff08;TimSort\u3001IntroSort&#xff09;\u548c\u9762\u8bd5\u9ad8\u9891\u9898\u578b\u3002\u6bcf\u4e2a\u7b97\u6cd5\u914d\u6709 Mermaid \u6d41\u7a0b\u56fe\u89e3&#xff0c;\u529b\u6c42\u8bb2\u6e05&quot;\u4e3a\u4ec0\u4e48&quot;\u800c\u975e\u7f57\u5217\u7ed3\u8bba\u3002 \u76ee\u5f55 \u7b2c1\u7ae0 \u6392\u5e8f\u7b97\u6cd5\u5168\u666f&#xff1a;\u5206\u7c7b\u3001\u7a33\u5b9a\u6027\u4e0e\u590d\u6742\u5ea6\u4e0b\u754c\u7b2c2\u7ae0 \u5192\u6ce1\u6392\u5e8f&#xff1a;\u4ece\u6734\u7d20\u5230\u4f18\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.wsisp.com\/helps\/94067.html\" \/>\n<meta property=\"og:site_name\" content=\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-13T08:41:13+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u4f5c\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4\" \/>\n\t<meta name=\"twitter:data2\" content=\"93 \u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/94067.html\",\"url\":\"https:\/\/www.wsisp.com\/helps\/94067.html\",\"name\":\"\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3\uff1a\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"isPartOf\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\"},\"datePublished\":\"2026-08-13T08:41:13+00:00\",\"dateModified\":\"2026-08-13T08:41:13+00:00\",\"author\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.wsisp.com\/helps\/94067.html#breadcrumb\"},\"inLanguage\":\"zh-Hans\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.wsisp.com\/helps\/94067.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/94067.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u9996\u9875\",\"item\":\"https:\/\/www.wsisp.com\/helps\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3\uff1a\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#website\",\"url\":\"https:\/\/www.wsisp.com\/helps\/\",\"name\":\"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3\",\"description\":\"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"zh-Hans\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"zh-Hans\",\"@id\":\"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"contentUrl\":\"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery\",\"caption\":\"admin\"},\"sameAs\":[\"http:\/\/wp.wsisp.com\"],\"url\":\"https:\/\/www.wsisp.com\/helps\/author\/admin\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3\uff1a\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.wsisp.com\/helps\/94067.html","og_locale":"zh_CN","og_type":"article","og_title":"\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3\uff1a\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","og_description":"\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3&#xff1a;\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357 \u672c\u6587\u4ece\u6392\u5e8f\u7b97\u6cd5\u7684\u5206\u7c7b\u4e0e\u6838\u5fc3\u6982\u5ff5\u8bb2\u8d77&#xff0c;\u9010\u4e2a\u62c6\u89e38\u79cd\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u7684\u6267\u884c\u8fc7\u7a0b\u3001\u590d\u6742\u5ea6\u63a8\u5bfc\u4e0e\u7a33\u5b9a\u6027\u8bc1\u660e&#xff0c;\u6700\u540e\u843d\u5230\u5de5\u7a0b\u5b9e\u8df5&#xff08;TimSort\u3001IntroSort&#xff09;\u548c\u9762\u8bd5\u9ad8\u9891\u9898\u578b\u3002\u6bcf\u4e2a\u7b97\u6cd5\u914d\u6709 Mermaid \u6d41\u7a0b\u56fe\u89e3&#xff0c;\u529b\u6c42\u8bb2\u6e05\"\u4e3a\u4ec0\u4e48\"\u800c\u975e\u7f57\u5217\u7ed3\u8bba\u3002 \u76ee\u5f55 \u7b2c1\u7ae0 \u6392\u5e8f\u7b97\u6cd5\u5168\u666f&#xff1a;\u5206\u7c7b\u3001\u7a33\u5b9a\u6027\u4e0e\u590d\u6742\u5ea6\u4e0b\u754c\u7b2c2\u7ae0 \u5192\u6ce1\u6392\u5e8f&#xff1a;\u4ece\u6734\u7d20\u5230\u4f18","og_url":"https:\/\/www.wsisp.com\/helps\/94067.html","og_site_name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","article_published_time":"2026-08-13T08:41:13+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"\u4f5c\u8005":"admin","\u9884\u8ba1\u9605\u8bfb\u65f6\u95f4":"93 \u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.wsisp.com\/helps\/94067.html","url":"https:\/\/www.wsisp.com\/helps\/94067.html","name":"\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3\uff1a\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357 - \u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","isPartOf":{"@id":"https:\/\/www.wsisp.com\/helps\/#website"},"datePublished":"2026-08-13T08:41:13+00:00","dateModified":"2026-08-13T08:41:13+00:00","author":{"@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41"},"breadcrumb":{"@id":"https:\/\/www.wsisp.com\/helps\/94067.html#breadcrumb"},"inLanguage":"zh-Hans","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.wsisp.com\/helps\/94067.html"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.wsisp.com\/helps\/94067.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u9996\u9875","item":"https:\/\/www.wsisp.com\/helps"},{"@type":"ListItem","position":2,"name":"\u7ecf\u5178\u6392\u5e8f\u7b97\u6cd5\u8be6\u89e3\uff1a\u4ece\u539f\u7406\u5230\u5de5\u7a0b\u5b9e\u8df5\u7684\u5b8c\u6574\u6307\u5357"}]},{"@type":"WebSite","@id":"https:\/\/www.wsisp.com\/helps\/#website","url":"https:\/\/www.wsisp.com\/helps\/","name":"\u7f51\u7855\u4e92\u8054\u5e2e\u52a9\u4e2d\u5fc3","description":"\u9999\u6e2f\u670d\u52a1\u5668_\u9999\u6e2f\u4e91\u670d\u52a1\u5668\u8d44\u8baf_\u670d\u52a1\u5668\u5e2e\u52a9\u6587\u6863_\u670d\u52a1\u5668\u6559\u7a0b","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.wsisp.com\/helps\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"zh-Hans"},{"@type":"Person","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/358e386c577a3ab51c4493330a20ad41","name":"admin","image":{"@type":"ImageObject","inLanguage":"zh-Hans","@id":"https:\/\/www.wsisp.com\/helps\/#\/schema\/person\/image\/","url":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","contentUrl":"https:\/\/gravatar.wp-china-yes.net\/avatar\/?s=96&d=mystery","caption":"admin"},"sameAs":["http:\/\/wp.wsisp.com"],"url":"https:\/\/www.wsisp.com\/helps\/author\/admin"}]}},"_links":{"self":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/94067","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/comments?post=94067"}],"version-history":[{"count":0,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/posts\/94067\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/media?parent=94067"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/categories?post=94067"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/tags?post=94067"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/www.wsisp.com\/helps\/wp-json\/wp\/v2\/topic?post=94067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}