{"id":296,"date":"2011-11-14T13:57:35","date_gmt":"2011-11-14T05:57:35","guid":{"rendered":"http:\/\/wangkaixuan.tech\/?p=296"},"modified":"2020-06-06T13:58:59","modified_gmt":"2020-06-06T05:58:59","slug":"%e6%95%b0%e6%8d%ae%e7%bb%93%e6%9e%84_%e5%86%85%e9%83%a8%e6%8e%92%e5%ba%8f_%e5%b8%8c%e5%b0%94%e6%8e%92%e5%ba%8f_%e5%bf%ab%e9%80%9f%e6%8e%92%e5%ba%8f_%e5%a0%86%e6%8e%92%e5%ba%8f_%e5%bd%92%e5%b9%b6","status":"publish","type":"post","link":"http:\/\/www.wangkaixuan.tech\/?p=296","title":{"rendered":"\u6570\u636e\u7ed3\u6784_\u5185\u90e8\u6392\u5e8f_\u5e0c\u5c14\u6392\u5e8f_\u5feb\u901f\u6392\u5e8f_\u5806\u6392\u5e8f_\u5f52\u5e76\u6392\u5e8f_\u5730\u5740\u6392\u5e8f"},"content":{"rendered":"\n<p>\u51e0\u79cd\u5178\u578b\u7684\u6392\u5e8f\u7b97\u6cd5\uff0c\u7b97\u6cd5\u6392\u5e8f\u5bf9\u8c61\u90fd\u4e3a\u987a\u5e8f\u8868\uff0c\u8fd8\u6709\u4e00\u4e2a\u57fa\u6570\u6392\u5e8f\u7684\u7b97\u6cd5\u7531\u4e8e\u91c7\u7528\u4e0d\u540c\u7684\u5b58\u50a8\u7ed3\u6784\u5c31\u6ca1\u6709\u52a0\u5728\u8fd9\u4e2a\u6587\u4ef6\u4e2d\uff0c\u7a0d\u540e\u4f1a\u8d34\u51fa\u5176\u4ee3\u7801\u3002<\/p>\n\n\n\n<p>sort.h<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include&lt;iostream>\n#include&lt;ctime>\nusing namespace std;\n\ntypedef int ElemType;\n\n#define LISTLEN 100\n\ntypedef struct SqList \/\/\u987a\u5e8f\u8868\n{\n\tElemType *elem;\n\tint length;\n\tint listsize;\n} SqList;\n\nvoid InitList(SqList &amp;L) \/\/\u987a\u5e8f\u8868\u521d\u59cb\u5316\n{\n\tL.elem = new ElemType&#91;LISTLEN + 1];\n\tL.length = 0;\n\tL.listsize = LISTLEN;\n}\n\nvoid InitList(SqList &amp;L, int len) \/\/\u987a\u5e8f\u8868\u51fd\u6570\n{\n\tL.elem = new ElemType&#91;len + 1];\n\tL.length = 0;\n\tL.listsize = len;\n}\n\nvoid GetRandomNum(SqList &amp;L) \/\/\u83b7\u53d6\u968f\u673a\u6570\n{\n\tsrand((unsigned) time(NULL));\n\tfor (int i = 0; i &lt; L.listsize; i++)\n\t\tL.elem&#91;i] = rand() % 100;\n\tL.length = L.listsize;\n}\n\nvoid GetRandomNum(SqList &amp;L, int randombase) \/\/\u83b7\u53d6\u968f\u673a\u6570\n{\n\tsrand((unsigned) time(NULL));\n\tfor (int i = 0; i &lt; L.listsize; i++)\n\t\tL.elem&#91;i] = rand() % randombase;\n\tL.length = L.listsize;\n}\n\nvoid PrintList(SqList &amp;L) \/\/\u6253\u5370\u987a\u5e8f\u8868\u5143\u7d20\n{\n\tfor (int i = 0; i &lt; L.length; i++)\n\t\tcout &lt;&lt; L.elem&#91;i] &lt;&lt; \" \";\n\tcout &lt;&lt; endl;\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\u5e0c\u5c14\u6392\u5e8f\n\nvoid ShellInsert(SqList &amp;L, int dk) \/\/\u5e0c\u5c14\u63d2\u5165dk\u8868\u793a\u589e\u91cf\n{\n\tElemType temp;\n\tint j;\n\tfor (int i = dk; i &lt; L.length; i++)\n\t{\n\t\tif (L.elem&#91;i] &lt; L.elem&#91;i - dk])\n\t\t{\n\t\t\ttemp = L.elem&#91;i];\n\t\t\tj = i - dk;\n\t\t\twhile (j >= 0 &amp;&amp; temp &lt; L.elem&#91;j])\n\t\t\t{\n\t\t\t\tL.elem&#91;j + dk] = L.elem&#91;j];\n\t\t\t\tL.elem&#91;j] = temp;\n\t\t\t\tj -= dk;\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid ShellSort(SqList &amp;L, int dlta&#91;], int t) \/\/\u5e0c\u5c14\u6392\u5e8f\n{\n\tfor (int k = 0; k &lt; t; k++)\n\t{\n\t\tShellInsert(L, dlta&#91;k]);\n\t}\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\u5feb\u901f\u6392\u5e8f\n\nint Partition(SqList &amp;L, int low, int high)\n{\n\tElemType temp;\n\ttemp = L.elem&#91;(low + high) \/ 2];\n\twhile (low &lt; high)\n\t{\n\t\twhile (low &lt; high &amp;&amp; L.elem&#91;high] >= temp)\n\t\t\thigh--;\n\t\tL.elem&#91;low] = L.elem&#91;high];\n\t\twhile (low &lt; high &amp;&amp; L.elem&#91;low] &lt;= temp)\n\t\t\tlow++;\n\t\tL.elem&#91;high] = L.elem&#91;low];\n\t}\n\tL.elem&#91;low] = temp;\n\treturn low;\n}\n\nvoid QuickSort(SqList &amp;L, int low, int high)\n{\n\tif (low &lt; high)\n\t{\n\t\tint pivotkey = Partition(L, low, high);\n\t\tQuickSort(L, low, pivotkey - 1);\n\t\tQuickSort(L, pivotkey + 1, high);\n\t}\n}\n\nvoid Qsort(SqList &amp;L)\n{\n\tQuickSort(L, 0, L.length - 1);\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\u5806\u6392\u5e8f\n\ntypedef SqList HeapType;\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\u60a8\u53ef\u4ee5\u65e0\u89c6\u4e0b\u9762\u4e24\u4e2a\u51fd\u6570\uff0c\u4e5f\u53ef\u4ee5\u7528\u8fd9\u4e24\u4e2a\u51fd\u6570\u6765\u803b\u7b11\u5728\u4e0b\uff0c\u5177\u4f53\u539f\u56e0\u4e0d\u89e3\u91ca...\nvoid ListAdjust(HeapType &amp;H) \/\/\u8c03\u6574\u987a\u5e8f\u8868\u5143\u7d20\u4f4d\u7f6e\u4f7f\u5176\u6240\u6709\u5143\u7d20\u540e\u79fb\u4e00\u4f4d\n{\n\tfor (int i = H.length - 1; i >= 0; i--)\n\t\tH.elem&#91;i + 1] = H.elem&#91;i];\n}\n\nvoid ListReAdjust(HeapType &amp;H) \/\/\u8c03\u6574\u987a\u5e8f\u8868\u5143\u7d20\u4f4d\u7f6e\u4f7f\u5176\u6240\u6709\u5143\u7d20\u524d\u79fb\u4e00\u4f4d\n{\n\tfor (int i = 0; i &lt; H.length - 1; i++)\n\t\tH.elem&#91;i] = H.elem&#91;i + 1];\n}\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\nvoid HeapAdjust(HeapType &amp;H, int s, int m)\n\/\/\u5df2\u77e5H.elem&#91;s...m]\u9664H.elem&#91;s]\u5916\u5747\u6ee1\u8db3\u5806\u7684\u5b9a\u4e49\n\/\/\u672c\u51fd\u6570\u8c03\u6574H.elem&#91;s]\u7684\u5173\u952e\u5b57\u4f7fH.&#91;s...m]\u6210\u4e3a\u4e00\u4e2a\u5927\u9876\u5806\n{\n\tElemType temp = H.elem&#91;s]; \/\/\u4fdd\u5b58\u9876\u5143\u7d20\n\tfor (int i = 2 * s; i &lt;= m; i *= 2) \/\/\u904d\u5386\n\t{\n\t\tif (i &lt; m &amp;&amp; (H.elem&#91;i] &lt; H.elem&#91;i + 1]))\n\t\t\t\/\/\u5982\u679c\u5de6\u5b50\u6811\u5173\u952e\u5b57\u5c0f\u4e8e\u53f3\u5b50\u6811\u5173\u952e\u5b57\n\t\t\ti++; \/\/\u201c\u6307\u9488\u201d\u6307\u5411\u5176\u53f3\u5b50\u6811\n\t\tif (temp >= H.elem&#91;i]) \/\/\u5982\u679c\u6ee1\u8db3\u5b9a\u4e49\u76f4\u63a5\u8df3\u51fa\n\t\t\tbreak;\n\t\tH.elem&#91;s] = H.elem&#91;i]; \/\/\u66f4\u65b0\u5173\u952e\u5b57\u6b21\u5e8f\n\t\ts = i;\n\t}\n\tH.elem&#91;s] = temp;\n}\n\nvoid HeapSort(HeapType &amp;H)\n{\n\tListAdjust(H); \/\/\u8c03\u6574\u987a\u5e8f\u8868\u4f7f\u5176\u6240\u6709\u5143\u7d20\u540e\u79fb\n\tElemType temp;\n\tfor (int i = H.length \/ 2; i > 0; i--) \/\/\u5efa\u7acb\u5927\u9876\u5806\n\t\tHeapAdjust(H, i, H.length);\n\tfor (int i = H.length; i > 1; i--) \/\/\u5c06\u5806\u9876\u8bb0\u5f55\u548c\u672a\u7ecf\u6392\u5e8f\u7684\u6700\u540e\u4e00\u4e2a\u8bb0\u5f55\u4ea4\u6362\n\t{\n\t\ttemp = H.elem&#91;i];\n\t\tH.elem&#91;i] = H.elem&#91;1];\n\t\tH.elem&#91;1] = temp;\n\t\tHeapAdjust(H, 1, i - 1); \/\/\u91cd\u65b0\u5c06H.elem&#91;1...i-1]\u8c03\u6574\u4e3a\u5927\u9876\u5806\n\t}\n\tListReAdjust(H); \/\/\u8c03\u6574\u987a\u5e8f\u8868\u5143\u7d20\u4f4d\u7f6e\u4f7f\u5176\u6240\u6709\u5143\u7d20\u524d\u79fb\u4e00\u4f4d\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\u5f52\u5e76\u6392\u5e8f\n\/*\n \u8fd9\u6bb5\u7a0b\u5e8f\u8c03\u8bd5\u4e86N\u4e45\n \u8001\u662f\u6709\u4e00\u4e9b\u83ab\u540d\u5176\u5999\u7684\u9519\u8bef\n \u8fd8\u597d\u6700\u7ec8\u8c03\u8bd5\u901a\u4e86\n \u6ca1\u6709\u91c7\u53d6\u6570\u636e\u7ed3\u6784\u4e66\u4e0a\u7684\u65b9\u6cd5\n *\/\nvoid Merge(ElemType *L, ElemType *T, int left, int mid, int right)\n\/\/\u5408\u5e76\u7b97\u6cd5\u5c06T&#91;left...mid],T&#91;mid+1...right] \u6709\u5e8f\u5408\u5e76\u5230L&#91;left...right]\n{\n\tfor (int i = left; i &lt;= right; i++) \/\/\u590d\u5236\u5143\u7d20\n\t\tT&#91;i] = L&#91;i];\n\tint i = left, j = mid + 1, k = left;\n\t\/\/\u5408\u5e76\n\twhile (i &lt;= mid &amp;&amp; j &lt;= right)\n\t{\n\t\tif (T&#91;i] &lt;= T&#91;j])\n\t\t\tL&#91;k++] = T&#91;i++];\n\t\telse\n\t\t\tL&#91;k++] = T&#91;j++];\n\t}\n\twhile (i &lt;= mid)\n\t\tL&#91;k++] = T&#91;i++];\n\twhile (j &lt;= right)\n\t\tL&#91;k++] = T&#91;j++];\n}\n\nvoid MSort(ElemType *L, ElemType *T, int left, int right)\n\/\/\u5c06T&#91;left...right]\u6709\u5e8f\u5f52\u5e76\u5230L&#91;left..right]\n{\n\tif (left &lt; right)\n\t{\n\t\tint mid = (left + right) \/ 2; \/\/\u5e73\u5206\n\t\tMSort(L, T, left, mid); \/\/\u5de6\u534a\u90e8\u5206\n\t\tMSort(L, T, mid + 1, right); \/\/\u53f3\u534a\u90e8\u5206\n\t\tMerge(L, T, left, mid, right); \/\/\u6709\u5e8f\u5f52\u5e76\n\t}\n}\n\nvoid MergeSort(SqList &amp;L)\n{\n\tElemType t&#91;LISTLEN];\n\tMSort(L.elem, t, 0, L.length - 1);\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\u5730\u5740\u6392\u5e8f\n\nvoid ReArrange(SqList &amp;L, int adr&#91;])\n\/\/adr\u7ed9\u51fa\u987a\u5e8f\u8868L\u7684\u6709\u5e8f\u6b21\u5e8f\uff0c\u5373L.elem&#91;adr&#91;i]]\u662f\u7b2ci\u5c0f\u7684\u8bb0\u5f55\n\/\/\u672c\u7b97\u6cd5\u6309adr\u91cd\u6392L.elem\u4f7f\u5176\u6709\u5e8f\n{\n\tElemType temp;\n\tint j, k;\n\tfor (int i = 0; i &lt; L.length; i++)\n\t{\n\t\tif (adr&#91;i] != i)\n\t\t{\n\t\t\ttemp = L.elem&#91;i];\n\t\t\tj = i;\n\t\t\twhile (adr&#91;j] != i)\n\t\t\t{\n\t\t\t\tk = adr&#91;j];\n\t\t\t\tL.elem&#91;j] = L.elem&#91;k];\n\t\t\t\tadr&#91;j] = j;\n\t\t\t\tj = k;\n\t\t\t}\n\t\t\tL.elem&#91;j] = temp;\n\t\t\tadr&#91;j] = j;\n\t\t}\n\t}\n}\n\nvoid AdrSort(SqList &amp;L)\n\/\/\u6839\u636e\u8bb0\u5f55L\u5f97\u5230\u987a\u5e8f\u8868\u6709\u5e8f\u6b21\u5e8fadr&#91;]\n{\n\tint adr&#91;LISTLEN + 1];\n\tint temp;\n\tfor (int i = 0; i &lt; L.length; i++)\n\t\tadr&#91;i] = i;\n\tfor (int i = 0; i &lt; L.length - 1; i++)\n\t{\n\t\tfor (int j = i + 1; j &lt; L.length; j++)\n\t\t{\n\t\t\tif (L.elem&#91;adr&#91;i]] > L.elem&#91;adr&#91;j]])\n\t\t\t{\n\t\t\t\ttemp = adr&#91;i];\n\t\t\t\tadr&#91;i] = adr&#91;j];\n\t\t\t\tadr&#91;j] = temp;\n\t\t\t}\n\t\t}\n\t}\n\tReArrange(L, adr);\n}\n<\/code><\/pre>\n\n\n\n<p>main.cpp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#include\"sort.h\"\n \nint main()\n{\n\tSqList L;\/\/\u987a\u5e8f\u8868\n\/\/\tInitList(L);\/\/\u5df2\u91cd\u8f7d\u51fd\u6570\u5f00\u8f9f\u987a\u5e8f\u8868\u7a7a\u95f4\u9ed8\u8ba4\u4e3a100\n\tInitList(L,10);\/\/\u5df2\u91cd\u8f7d\u51fd\u6570\u540e\u4e00\u4e2a\u53c2\u6570\u8868\u793a\u5f00\u8f9f\u7684\u987a\u5e8f\u8868\u7a7a\u95f4\u5927\u5c0f\n\/\/\tint dlta&#91;10]={5,3,1};\/\/\u5b9a\u4e49\u589e\u91cf\u6570\u7ec4\n\tGetRandomNum(L);\/\/\u5df2\u91cd\u8f7d\u51fd\u6570\u83b7\u5f97\u968f\u673a\u6570\u9ed8\u8ba4\u8303\u56f40~99\n\/\/\tGetRandomNum(L,10);\/\/\u5df2\u91cd\u8f7d\u51fd\u6570\u83b7\u5f97\u968f\u673a\u6570\u540e\u4e00\u4e2a\u53c2\u6570\u8868\u793a\u6570\u503c\u8303\u56f4\u4e0a\u9650\n\tPrintList(L);\/\/\u6253\u5370\n\/\/\tQsort(L);\n\/\/\tShellSort(L,dlta,3);\/\/\u5bf9\u987a\u5e8f\u8868L\u8fdb\u884c\u5e0c\u5c14\u6392\u5e8f\n\/\/\tHeapSort(L);\n\tMergeSort(L);\n\/\/\tAdrSort(L);\n\tPrintList(L);\/\/\u6253\u5370\n\tsystem(\"pause\");\n}<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u51e0\u79cd\u5178\u578b\u7684\u6392\u5e8f\u7b97\u6cd5\uff0c\u7b97\u6cd5\u6392\u5e8f\u5bf9\u8c61\u90fd\u4e3a\u987a\u5e8f\u8868\uff0c\u8fd8\u6709\u4e00\u4e2a\u57fa\u6570\u6392\u5e8f\u7684\u7b97\u6cd5\u7531\u4e8e\u91c7\u7528\u4e0d\u540c\u7684\u5b58\u50a8\u7ed3\u6784\u5c31\u6ca1\u6709\u52a0\u5728\u8fd9\u4e2a\u6587\u4ef6\u4e2d\uff0c\u7a0d\u540e\u4f1a\u8d34\u51fa\u5176\u4ee3\u7801\u3002 sort.h main.cpp<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-296","post","type-post","status-publish","format-standard","hentry","category-06-02-"],"_links":{"self":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/posts\/296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=296"}],"version-history":[{"count":0,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=\/wp\/v2\/posts\/296\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=296"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=296"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.wangkaixuan.tech\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}