From 84fd6d7a921bce65ac50f722d73b05fa54b495b5 Mon Sep 17 00:00:00 2001 From: LHY0125 <3364451258@qq.com> Date: Thu, 22 Jan 2026 21:43:03 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- exercise/查找.c | 330 ++++++++++++++++++++++++++++++++++++++++++++++ exercise/查找.exe | Bin 0 -> 61275 bytes exercise/模板.txt | 60 ++++++++- 3 files changed, 389 insertions(+), 1 deletion(-) create mode 100644 exercise/查找.c create mode 100644 exercise/查找.exe diff --git a/exercise/查找.c b/exercise/查找.c new file mode 100644 index 0000000..9ed5138 --- /dev/null +++ b/exercise/查找.c @@ -0,0 +1,330 @@ +#include +#include +#include +#include +#ifdef _WIN32 +#include +#endif + +int MAX = 100000; + +// 二叉排序树节点创建 +struct TreeNode +{ + int val; + int idx; + struct TreeNode *left; + struct TreeNode *right; +}; + +// 顺序查找 +int Linear_Search(int arr[], int size, int target) +{ + for (int i = 0; i < size; i++) + { + if (arr[i] == target) + { + // 返回目标元素的索引 + return i; + } + } + + // 未找到目标元素 + return -1; +} + +// 冒泡排序 +void Bubble_Sort_With_Index(int arr[], int index[], int size) +{ + for (int i = 0; i < size - 1; ++i) + { + int swapped = 0; + for (int j = 0; j < size - 1 - i; ++j) + { + if (arr[j] > arr[j + 1]) + { + int t = arr[j]; + arr[j] = arr[j + 1]; + arr[j + 1] = t; + int ti = index[j]; + index[j] = index[j + 1]; + index[j + 1] = ti; + swapped = 1; + } + } + if (!swapped) + { + break; + } + } +} + +// 二分查找 +int Binary_Search(int arr[], int size, int target) +{ + // 二分查找 + int left = 0; + int right = size - 1; + while (left <= right) + { + int mid = left + (right - left) / 2; + if (arr[mid] == target) + { + // 返回目标元素的索引 + return mid; + } + else if (arr[mid] < target) + { + left = mid + 1; + } + else + { + right = mid - 1; + } + } + + // 未找到目标元素 + return -1; +} + +// 分块查找 +int Block_Search(int arr[], int size, int target) +{ + // 计算分块大小 + int blockSize = (int)sqrt(size); + int start = 0; + int end = blockSize - 1; + + // 分块查找 + while (start < size) + { + if (arr[end] >= target) + { + for (int i = start; i <= end && i < size; i++) + { + if (arr[i] == target) + { + // 返回目标元素的索引 + return i; + } + } + + // 未找到目标元素 + return -1; + } + start += blockSize; + end += blockSize; + if (end >= size) + { + end = size - 1; + } + } + + // 未找到目标元素 + return -1; +} + +// 二叉排序树节点创建 +struct TreeNode *BST_new(int val, int idx) +{ + struct TreeNode *p = (struct TreeNode *)malloc(sizeof(struct TreeNode)); + p->val = val; + p->idx = idx; + p->left = NULL; + p->right = NULL; + return p; +} + +// 二叉排序树节点插入 +struct TreeNode *BST_insert(struct TreeNode *root, int val, int idx) +{ + if (!root) + { + return BST_new(val, idx); + } + struct TreeNode *cur = root; + while (1) + { + // 小于当前节点,向左子树查找 + if (val < cur->val) + { + if (cur->left) + { + cur = cur->left; + } + else + { + cur->left = BST_new(val, idx); + break; + } + } + + // 大于当前节点,向右子树查找 + else if (val > cur->val) + { + if (cur->right) + { + cur = cur->right; + } + else + { + cur->right = BST_new(val, idx); + break; + } + } + + // 等于当前节点,返回当前节点的索引 + else + { + break; + } + } + return root; +} + +// 二叉排序树节点释放 +void BST_free(struct TreeNode *root) +{ + if (!root) + { + return; + } + BST_free(root->left); + BST_free(root->right); + free(root); +} + +// 二叉排序树节点查找 +int BST_Search(struct TreeNode *root, int target) +{ + while (root) + { + if (target == root->val) + { + // 返回目标元素的索引 + return root->idx; + } + if (target < root->val) + { + // 目标元素小于当前节点,向左子树查找 + root = root->left; + } + else + { + // 目标元素大于当前节点,向右子树查找 + root = root->right; + } + } + return -1; +} + +int main(void) +{ +#ifdef _WIN32 + system("chcp 65001 > nul"); + SetConsoleOutputCP(65001); + SetConsoleCP(65001); +#endif + + // 输入整数的个数 + printf("请输入整数的个数(不超过 %d):", MAX); + int n; + scanf("%d", &n); + while (n < 1 || n > MAX) + { + printf("输入的个数不合法!\n"); + scanf("%d", &n); + } + + // 输入整数 + int nums[n]; + printf("请输入 %d 个整数:\n", n); + for (int i = 0; i < n; i++) + { + scanf("%d", &nums[i]); + } + + // 复制排序数组,并记录索引 + int sortedArr[n]; + int indexArr[n]; + for (int i = 0; i < n; i++) + { + sortedArr[i] = nums[i]; + indexArr[i] = i; + } + Bubble_Sort_With_Index(sortedArr, indexArr, n); + + // 打印排序后的数组 + printf("排序后的数组元素为:"); + for (int i = 0; i < n; i++) + { + printf("%d ", sortedArr[i]); + } + printf("\n"); + + while (true) + { + // 查找目标元素 + int target; + int index; + printf("请输入要查找的整数:"); + scanf("%d", &target); + + // 选择查找方法 + printf("请选择查找方法:\n"); + printf("1. 线性查找\n"); + printf("2. 二分查找(数组需有序)\n"); + printf("3. 分块查找(数组需有序)\n"); + printf("4. 二叉搜索树查找\n"); + printf("5. 退出程序\n"); + + // 读取用户选择 + int choice; + scanf("%d", &choice); + + switch (choice) + { + case 1: + index = Linear_Search(nums, n, target); + break; + case 2: + { + int pos = Binary_Search(sortedArr, n, target); + index = (pos != -1) ? indexArr[pos] : -1; + break; + } + case 3: + { + int pos = Block_Search(sortedArr, n, target); + index = (pos != -1) ? indexArr[pos] : -1; + break; + } + case 4: + { + struct TreeNode *root = NULL; + for (int i = 0; i < n; ++i) + { + root = BST_insert(root, nums[i], i); + } + index = BST_Search(root, target); + BST_free(root); + break; + } + case 5: + return 0; + default: + printf("无效的选择,请重新选择。\n"); + continue; + } + + // 输出查找结果 + if (index != -1) + { + printf("找到了,目标元素的索引为:%d\n", index); + } + else + { + printf("未找到目标元素。\n"); + } + } +} \ No newline at end of file diff --git a/exercise/查找.exe b/exercise/查找.exe new file mode 100644 index 0000000000000000000000000000000000000000..90fec9647d6fe1ded541328673a9e91c6b0cd173 GIT binary patch literal 61275 zcmeHw3w+eoo$r}EAjo5)g2pN`V9?MNOd!Ev(PokiOmsrVJOH1QA(=dMGMUZ;g6ks~ zP^M!v_Mx=3cT+2rw%%>F?Y3y$Hh?W)wVPURORL+aRdLeTm9}0tTHD<3?>zpG`R5^A z*U#>~{y+KWobx-s^LwA?f95~c*Y~kZ##k2a@o~luAf>B}|DXC_H>&3?dU787_N?a? zAFz3zTU_7P9(9Bxovjgnhoi|K3U$UDTLO+qJmhE(IVx-F937p_ffaM-o{=v}dtHn* z-;>LJzv$|A7G!KNo3WGZVm3P?<5DDyEy0}u*x5*Pd80BLC6ou8T`gq7tf<5P{dn*o|k1EdSrg*qf3xFAp%b+fZ%E)-qOL0Wx; zFC~Mx32y^#!&OFjMQb=@-P@JfYzW8{xQ ziFb>J!ZUQQ z>}!EjnapwbW`BVIiOPIO>ZV1EfyUFNhov0O`i4y#>p<1vPA>cg1PHj3Sxc#JyOUS8 z?w}-`GkRW&@{xPZkL){JVT31AnV7MEQ8akcZU3iL@z>nRl5R9F8c)vX8ME1UUJsn) z42ZsyOm-yuT*!b7V7%Ik{H}5P&UU1bbyo!?%ndKiaTN_dNscNyHa?WP6yqOkwHKtv z7yN5C6&8#Ua_`)Oe;prpCo)or#jxXiJ4i45c?V;?e{XX)jk^!Nmg!Esoq8ITyIyoB zmwyXYRf(tV_g_sMd)~+?dXdLl(zB4I?r{*su+5$LW9n0AQI$AZmB_llovdF7!yR<@ z9L`By4Y+&FZ{p8+Y_GYG(6q)piKRD!Z0cc59#CSa9H3;j6QJbWYw#Z$c@iY?YQm~P zo8;VckxgVT!2eyx>^px5D#-=oL6n}4Md2974LAF4a^48{>?96oT(S)6{s2Nt)9u># zxAE~O;76AF#)TSi06;KW$n7|H29lKDK_)&jgKTNv^)L_+X!mB0^dhJEGnEM}*dG!Y zxa)lqG)JJ;kr^Za9Pum)shMaqvWm#`xf4f5{vEl*!PJB2^4Q}2H=EjUf2TeVH}z4> z6+kI4;q|XNsh+OXZI=4f!wX58G23~Ayjh>&g5PJM)yNCHE0wXshC0eNxD&5}N3J_j zottRLt4z2YM_lg`qtX1N>s|LAckldNRCFg@xfm^yY>mqi&qmegnLVy|ZODAgm3R9K z2S9%u+;eX_oJLZT8+idlj<~3MBYBgOk-hkrbiHY1k}IG+gEn{X90U8KV1MY&jtSea zgzKcCnNjLPvVoZthOtTThms8^6S)wUoY>=f6I$l=q-=lZdUuWMP5XUSP_^fdF&0}O zEI@T@T<_ZNTZoEL8+V>=2M3wfZMN;mRiK<^3_Cy*DrS_@tO1N+zyD{G8S#BLNV;@+ zJRTCR*C#R~DlKLQ>?qA1li{;~lh)rk8&wF{1bW6S%BGMV{D+jpLiJ#?Cj;;VBo9kWv9}0|76*QtKR~qHn z@7s=8S6UTnRxcF8$P;-8%2e0+7&g!ZL&sRMAvcjLGI>0*Sq{yR^RxnRMt`NXccZ;K z*)Zl#l;@0IMMyNd<=v?o=NcPx2BTlp8qd}n=OXyfIv2yAF1YCSByns7uOwk0^uO_T zKu(r{Hh2iDGIy`*G0Zk!;-EvRRRE1H0nVo-&ZCG4iF1d&XRdTiI= zoxeynJeJH}1gdKe-SrG$?xrDk&+oCoXgH2YKRBG>?isYZ52mt^&q{5b4_eEfcK2e9 zhKfv7WN@T}3xf#6$X+A4z6(q>p2$b>PimEUMMmCQ8c(j7XLvM3uLiR6qQ^% zL~)a>jfkRO7Mpm{^$3_mT7-r9xvHqXY`C^#FmWU2#qDH`zdIWt|4i#*WSVc&2@6*En}s!<|D9X!nMEW zj{W1Y`DE#&Yd_4FbvLzm8ZC~vPNGkbj~tk&_1}2w$9wL0TxQKn624CxAHrBtL(pDtju@&Ilu>clVEkpiYQ+*8n-;#e!j5)9 z(`urS(KCjna%|16V=+hKXwL}NgBKifFFWe)jU5`J{mA&)?w-*c_nJS)|2HDzP8v+H za=zi_k(b}3y(9LDrVTTz>@Bk;4qn}}_7JujgYlE2d(HL9>}MLW4H%5g!0H?F9LfF; z%7_^@;s^1*qCxWtn)K~?Co^^~_9JH>AUvhaPUO*NzJQ*i!~2we*-aRrdP*~5Gmh}1 zpq_U!VrTcfV~cIjkZ-v8F!l?*3xA0dCUU$NkU%EbAzApQ+Sbmv(+3oq>O8c_P{KlR&Gwk<12X&Hgz=D@nLXxJe zyRrNmA6EPG-i3oWxpF5zk@KfYd#=;*CwuPpJpB7at~f<#LT5$InU(p4Rf#`VC652e ze&+4@1&B{%Vi?AI7i3kDZzDF-# zhw?}i&f@#k-i1$4xk)eYpmH5WO7Fs-QGPu+R$ec@Z1yj=M=4D-o85^Yb5-1l`uxov z91k>l5}y1vIw&Ye?L3n)=K(Bu*poa6dgne5(pBhvpGS>58OtvacDR9xiC;l)Y?@Pl zmAJU3ry|zp9_-cKKlW26&=Hbm#6JVJ=ij@IUG6Lo%H4; zYjdh>Lnzws{v-r(_8hbUx4^mPkMZN~#4l5g2n7TUwxIT%Cx8Hw4Iqgw^&R)Ymowcq zV0AgSy1;4_v6uS7IArB^+W(-n1e%~5dOs-63e-cem{{_@1 zH|2Pem3euotAGVqD`2pB>M|7jOdWtVI5#;rIvbqz!tic)Z!o_sd1VQR?HZ4r>F&j_ zcC*iUqw^-`%}(DPo1wWUxzr6F&L1E@J{stGJIB8BcCLL_J+Phj@2=kQ zyFsvS+4Yt^@n?#q9Y4XMZrr`>M;_Zxc0C{eh^tX!y#1c7kfrDCGW)Kdp;(n% zEjS4&u!1Eyj-Up_iDqgh7(k(_#OlanvL7Vpe&+_b;F$gX?c~E`$@w@B^YjMZrDG_J z%W(MTfPk2-OfsDK#pa?1rT3J#(&;(1VMMW;A2;Yfpq)xBgG)X+a=G&(c&&T zoq_m?gR`&6vG3YL93aQY-5jeMrh?VJBdu1p6VmPlh^z*^G^?FURs-Drz+b4g=WpHi z`~HX=nXKg9@p0$w)g#9gUuRO1+x6D=YpT8nG@>=`ne}Up-UXgDf3rXE4WdQM^}DE^ zjt}pDL=qjw#0@u$#5hqgzo^!+L!&S8@lN{GzVl`@9|_~1u$KnUMeC8JN-iEp=aBuA zCG0X-C7K0Od4CwxDU^8T6`S%h3s5!qNk!1V-@c z1Xc@kUnb~}XhG6Dx0CWuBCkeQIvRO>Gko{zba!ws`4oI%wz^e%EZAPzlFk%9dB1u ztVb|D0Gd}mgy%-v)?b-KveloBdEw(dW3#s1iutAw;-$}HMbAG$o6=N_jwt!bD;?E9 zRQoO)Ws=!f3(;dP45<*xaf5q&Sf5j`%myF(PKuXptFA-`>W=?dZIc~09PWFoJPW*~M|I3~D(fBVgxWwjS#=t(g0&~b8Y2kSTcJeRAUjiv^Y<^Q4MTeg=QSKu61mpTw?}iH8`UQ`6_+*eZ7-j0XiJAv8*q z5|;(5xQN+nNkj~5iG?e9t^#vdA*x0n?>Ra?`c=99OJ-jn*!?&@Pdv@Q+D7!#-jeeK ziSY%)ZKUGdk&UGFvDhU=&yUWAcif3*V&`N1khHBi?oK*$VDV|+`AsOgtq_!OB!4GRDagJL*pciYN{D@J8H+g9 z)*o2=#$QWjSMvt3e@m@}TStGcdo`K8l2^rBlGz2wp-aWT3s=rZo?Mxy)@|ra@Kb6n zDFA1^f#D;UaE@fZ+5q0TFo(+A_=10FMQjBTTd8ZXS5qrr2$uRD#|u}ho> zXdHAW{zNOs|1pE&A^tme0;?7N%th1pMH3A1y5NZdVFnT<*8@?oD0RxGjGCQVoIz*NiVthmJzkLapA0m^VtMHW6V>`6t3bUVEcHBlb zJqgE_!?EScu^D->OO@#E-ufXpmdC|gWtTW&Sos`_{fnEnv2dw-&7pV-E;aN>#9K0Z zJMn*BliyA8Bg1T#J25222@z#(d*u*;bo;>mYlQqf6sEU7Ozxfm`@;`jQsP)uZ+&iF z>=({nCyx!-|B%W4<%mz%e-QRBhy4#m=D2$f6;!SHDUZ)&dH#P49ZW4!@!?4>{OZMg z+X9b&j3T1CsbX!l?YN4Fc^)#q_DoyF#fUT6-G=}~DEt~CdS@v4o)_{Rb0KzX5W5?C z>&^0A4f&2%CyqvDRYE||nn7%ixPZ^ce}~-@vBN&ZV>>>22JJ_vdmApZB3>Y2sd%XyC1ZhOtW?4TRK z&DR;)5*3UurCbV}TvjFEyl0AzrF@yxlkt$bPs|V4g~VuM`D1MMuo7yc&1RT3n_aZf zDoveB__X8#CG4be@CG7F1Q9pwlJ$%4Up0DsBAbxp)3oqUCwYW`Jx?1+LVi%=dtdw$ z8t`p!(J|VZLQn_&D@`S3Tca=#D?Q!~^L?^8KU|r34im5kr_qUjO$~xX&tGj^=$>DW zr}|J%-HLyBXg@P`3o*bEQ(^|UNA)h8h@q4jo8?T-$xpqEYHb>)C&ZTZg@qsOvyA)- zP)_}YwhF{AL+AGmWYhUY0h@rISf3_-oEin4U4!D(&0cw!52Li6O=ef+W0hFSVp((+ zGx9y)8Ab%&ULHK87NHL7)|`v5KOwgtOm$$o1&N0Md4l#LG-v6Z3GqFtzxdkG?6MRM z_;9yzM3VEN3k=3{Q+E8LmmVQ4EZORLz&;OCz#grDw_V|6Qun|7fG&f4b>P+5WwzS4e!7 ze#$5KtMnFGR_RJvo-BO_hc;wCmHtYWpONX4GX0uNKQGfy%Jepw-XhcMWqP$tuaN0S zc{-B(jcJJm$9{Odj~3{^2V;QY3UA_{pw%E);POiWFe;fYsx$%yFEh6vPAeA{n(MpM z%HbWNzDuTsD@8dh(?N-UvPi(oWI80_sWJh7U8W~xN?LY@@v&8>sAn?uR@O6bT|FC; zbOvN<)an1_d{bLf*s;2#u&~H+l_M0#$B@L8`o?!t-~aThyY`;=?6*&RcHp(o?|kLJ z*N}PRsok#}=uLfRSLz4%I+ixS@l@iCr#{b?HZy^(;Q{H@zTGFj_1QO`+JO&BNn&W> z;B<&48lJ&U-2bUppM2oezWdRV_ce5J8>fURZ(~1p(i-&&$FTxj@O?2!HMp#hzhoHh2xbc?|XIkJ)#VC1lN&Ax=%ck zfGE(2IIddZ0Me^pe0VCnVnOVI#EHH~UiG-k?-w2@z8*Pyxe^^@r7cq?jCsM$$NnD+86%uME||Q9%u;;uRirz zVVI@OFx?|x6WB&PNrp)AYjBZ_cLhjK`$c_@OmFWN<$<(uAibF?J0q>}jzB2pXzuLr z<1_w&NTf63D5$Kdc2;dz#ga57MB7_K?Je#2Zb4JPQQ-B|)YWlH^_{UvvFbG} z#_HSfb%a1P9*jBgRfSk*rz6_o4+fFrUsMQ$Q3-Vd&5nYG4V6lYhS05{&TUdVF1N44 zA8UiM1Y%Bj9N9w+G{qz!hkS%h}uviK33BVMm)k>Iii@+B^KMf#uOa zQ>?u+#2k)|?U7jAAG|gmh-~MLA$tpafUdS>dn^!j_+t*gMuii_KdqfN(isCS)pA>V ztj*DcFKIXmyOwqlp3*%W4aA!}VLW`!-cP*giypDgrp}-PK8zAzY4Zvp_0;XQw8!Ab z+X6;>k``bq6G#u;JL56(J`a*h9Wj5TH4ua4P<5$edwU?*Oa(Z^0jtMBIIINeetvvB z{eD5h%6>LJPWgFAm0gqyB$Ghc;rK2gxJw6fRQZ_11_Y6*dAriev9xkHt<2KOLuuu*w6Z&`+?8gJ-D%~%v~qu1xjT)XH?2IF zR?fY|Y>!4qS~(4WeMQ9;j)Jbz)xOom%fp?~_AYd-w&jt)*1}62{8IMa-$>T`1^hO6C`cBr|`S_4K^0`R! zaW^Ahh;%LPAo68Mow&oudy#$_cMN$-zrH}M$tYcNE@SrrPU#`sdywZT&dVP|eh<K^kcVyA4{+xo4|_AG1NtHFMOugZ0^|`_Z1ZA_bCgHggu4{^Fw$S*UW@!N z(sFE6-N<{9eisK<^~et*{TuEe@(hP-b8yFyN9?laaM;*|{4i24X0~qRDg6QNKI8|H zIzP(TBLqiU{&$S+N4^nh2=@T;VWfBBK7f2T(#LTRB0qqXzAN@L@|1oN_fh2gkvf*c zZpc%*3HNd285`R*J>;=RU;*47V6r8K?%O~7WNe^WiB8hzqLcTQ$@&RJQR zHtz)am6O104e-hGs%=(AHeuV&%>L||nX_zXvy4K{OX)cylg%gxtWnBCGEG)@&MbD$ z?inn%E1S)3%VINrXJ|)sw#f3#EH?8~nS~jRwyB^{%j3SY^oQe{(PI|WNmsSWv;=-w^mHs-1RZYf_{ z3|Qn;@(>S|SM8N-Dh1Am*MCh59PQKPx^EBWgHK^ReNcxz23X;zF^3soF9GHTENp;f zeGX;7b{k-q0=65legkX|VEurVf{(g}0W19sa1F4W&!Y@jzX7%uuztWMx{gZtuuR8f zn)6wKoiEe1GWE!Gi%h#^x?83X$#lO=70&~*d^8PyT$WQZ{gX`JNyE!}NKnd?siNzU z<Gx&&tV~~!>02^A=V8HliA-0@v|gq+%CuRgA(<+9 zyJY#3GX1P^G@(Eq}c|G)Zw zsjV^)48#HzIAOx+P_Ry(k6dGO;WQ_b4rV(u)(2u9e>CQz11rWpm01-+OMejO66we% zGd%(SRtuQT%B~B{F<&$g^MwN2eDulOK_!|;F!dfDM0AuGfI{4~rV(bjG1#&zZh{#hd#unS6 zpNPb;hC^M2FB%Rs(W#qHXaRe5WpxBPn!?-Z%^O@2AI@YzYldFhiq)SiZA0Z&b}sWZ z1-jZn^*rP{LoMyCIOy_){BXfGYL6BlG1hErZw^TKg@8w5K7Y*jiFkX{tv*3#k%IE# zQYOHwnXg@QrXnv5LuZwkZA=)Pjj4W(sE30(m`hmF9}fFs+rt5NjVQN=aMaY^>k@irmh1)o-CW_j4^5TcrhZgwI0{>+#P=@^-gv;&s z_BZy2`@8%5`uFtr_wVl?=s(au*nhNtsQ-BXaR15vvHqMd<$j6YfwUR;!(U>L<~*AF zXx^iRd&~BE_crbg@9o~(x3_=qz}~^VLwkq!p4`j!xhD|9Qc1^ox}TT{--JxBR@uN?x-5y8xgJ z{)RJwZ^if!^54k<`4Bc6C$c0noy{^+0F(ki8+TjxZD$I+`6$g?zoEfVv2vAs0OnZU z5sQZcS2lG<0xMDQN1EEM4B^3W$nRL*s{U$FrS6tc=W;CV@u`93EnDcJ8eeO)Z)t66 z0tA)On7`@P<@9_R+c<2`7G|zLCzDI^H2B|$JHs}EuURv4W(GU)?3e$GhiIW4XvX9C z7|Y1X)@wK*V`j7s>vD$~Ei0Q>W(jPOpJ_(P&Ek}rJL6k|0kF=|s-+BBswyiBA7=2! zSWZp}tT`(qOGu~T3puid98}0`r)Q63KkQkW+nWMW_Bz!2JKM8%n0+(q>Kit=e03FW zS7n38WrTU1we?j_kFVCX-dE}Jy6|y@4Hefho1s;m%Qp#D#^hM*yuON>4fq5`eVvhR z=Hx9VLeJ9CD_wQ1Y#S3^S9u{mjIPEUh@6`Pw@4f%OB(Ad1RI&)KBwX2%hr$zBqRafKH zfm-ZvebXq_R(WAfkF&mNql=xX<2oxU8mb!rcll}>>ets)ZCLMf)7u}jUc3Qv6{TW*Gx*RvHmL?~n) z$jYm$*kx0r)L&n*p&swv)FhaYj;D?l8Bi*(Zor_~umOF|!&d4QHJA*l*6{%v&ad0R zR_S%p;Oj6AxLC0ccWw64Q0FYKVk1u%fDIdzA3Ze)cm!%yHG0R# zCc{D`pie2ZwPrN0v*H>=gp4n;l!kew8MFR6ugl}AgJ49jj$LK0CRqx7<=6SVn`>&> z$Ms6;XtfX;lNQBYov*&ew-J4@YzmZhwKdfo$vGjCm`Cd{8r89K9Yf5FrjBHoqgjQH zNj`-PP{e1%sGJZ(&DzYRSM$#9t#dc5D`)F;u!yYU^6M}!P`|9&3`4Eg>xu7rXT2K+ zSxGZ?9ll7fg*#Q&RXFR(T(Y*xTq~Ovi>6nbD^*ijdyTnPHZ2uRJ?2W)RMuAOwL+ny zm8I*doxTb;KC4>CHl$atELm-+u1T*hDOzc$_UhFeS5~gWh*jCZCl)d4*ZSNTSiP0( zS{;vq9-&iFftl3h!<4q6awDtN>zx}nLxjotMcovL=B`n1!8EM38cdb2h}KUwnrcWA z)z>yzYJ@!zdOokKwwi4=A;3_^)!lWbN}|ihZR%oGt_lR!^%ex7kB)JJ34`dTk+{)< zkWS(z3r77WVdEN-##_F=t=m1ODVcgBrK8$Xydd-F!nti;^s#+%kleOtJYDG@l4zadw zw^oX^96AB5v-pbr76X!02=hr zHdnaUm$ObY5Na2)unr?-#jr`!A^U`0qs281saR=Ibwsb0y9ZdkvPyJztnILEs&`%k zZ%3y`B+ddkrXvfx@Ni;r9jyF+tu)S7y^0Upb@df&n+_xGYb$D5mk#nEMA&w@=cH}A zY0r7WR+lUHm(E)3iD!i4%|$AMC=xMxx8+Z)62wukOR0F zcwxV7hTN`;U36}?5Awt?1hI_VnJTaC)>%eImTw*Hu8UT)jI2yN2MY%ST@D?Vqrt=` zJR?^FsQtM^gP3;oxr#FJ)^Q|h0MDRDbiQyb!ZJRZdl|O&S>v$P`8X7r%^)_PaXnS& zfIfCvE*+Kle3cY35>`ks-lPs0{@Di`n?cQQpHqSVvoagy_nl^3hTfSV zwli7oxo6tWvS-daf8Nr0XJ>EEgK$mi{dLH1MmwR`Hb6#F|W@ujSpmSc%A%XYd z|NovAsJP-XegYrq?2KI&jWk_`Gx+7=i!GN0`HB2x;*&a;wXZ5&ePh%1R(uR&MIEcS z;zq6Aja}mFGespug@*6Y#OcEtk(h65(MtY(8qwfJoq=kHZ@(??z$1Wdt5)79crtpz z;H-13Tv4n7@4u&c|I17LpX|p|3om8}uW7?lM9Rt)P5;@kXwu=mg}M;l*q3BGL#WH{ z1?i_#bxIU;Cu0v~x>=~hu4rSeTY}5!AzBo9y;23{ik5af(!%RUaMRldTW#pIfvy0| zYP$TgWMdAj?M+o$VFz+p6=T8%4u{@{|0l7eq*5k-$f!3JPn{Y2XTqE@HO{{QC3hN} zY>;l8hL;04!_(lD0cVa7NosKoAcNCz_XDSY8l3IGDVv5nt%QcBq4O`mp`UWn?feW% zC#PtIkIaS1%vgRipg}M3X-mc&MhN$Lfd)Z_(JCy<1bH2hfhl-VtC?_aH}G@`&jX}v znpRf<$2$#9GjQl(wa|iig#hWB#;TtM&d@ZJzXzPcX>jNzK>btjqOZW?tKYmA=n`fi z{KL~w&I3;4G&n1O(>D!HC2+c@!MPqdL%7L1PzYBLr58AaEW09z&lNXsW3Oot!r6+_ zNe-b_z`;ZMNbF4wN3??P5iW2&=-|VV{L{X<9Ku`4U%4ZCgp+B@N1c<3+NFNsjsPUx zM5B%Rl{vzJvcOU6Rf331{bC)J;4L)-8cnMdx#%Q>ZLPMw;OIN8pqx9HxFdP_!Zm zafZO{t2aFrs}`b}u&Ul(<&;&)mcpw1qa&)Cr^>2iOJP+t?&xUB8ruL8))24GNS}9p z2u;08(@CuHGvIt#;cyne0p#ltPml1o09gX>=#VV5IHWKzbGyHw1-7w^Q-R(Pi? zjS9ZuEr0QmJV;zJZG?lbMH?>l>yZS4;ehkPgtotg2xu{1LFlGSc{vHF@G_PwWTG@T zuLPa`dD3DNa0;&=t;Onsj|sd~iB`j^6^CpD#0$lR%oLeAF>2?-Ydgq4jr8FfrbfRg zT4`3*dXtccbpH)nLP^7={FMus7^BR*2-WH@ut~dAZ+abY;V>TpP`1q_FTE$^E*PZAX2*|9`%Ym}4ml;p#RR*vaCFYnBP*U=I0eK4vs~qVRg(u_F`y-oE)M@z2Z4lr5E~QON6ufm z4Jp#hm$Kn|k+~5~ryFVUC0ZF96X+%Tat?4rY>+R^GAUpD6KaGnXrSZ2!`lQ9zf^4W zy@%L1HN7T~S^DA^;4I|9PrOFsVS_8UOn0HFkjF7$tP;}wz!^042zZPy&WHd zPCO=5)Y9)tR31=zrR~3n?FxZYF)$U5{3YRG@S@1dw7Ky=O?OVG@_NmN;sd3`Lc0X7 zN~dP|NpU>a51QoBNbro5*|~oz9E4Q<_19ldqcYuM&6Y+-{<1JZC&iJmN;80n)vl2E zf|eewDmEHdA1a+nY;*&Ex^e6c;0Sq|=$me){rdYYPoE|aGHI9aMaA{Ir}71l zjS6Siv^Z7Q_fL=G?3)Tl`U?jc(mow{k(2H#5?{T!OZaQ*abEZ77+RViJ)MeAr?jE$ zUuBr!ME@#71VKr|rN#sYYNi_#N`WKBgvsXu`q3&8KX8t(C0taf+XzK^2U@HVn+U!} z0&e;xQJ99Kt(pXcdI9NTzTP*B$=@O;O@%c`U-P9_O_lG#8s})%;HS{Owm>k9H=3;= zimEq-xi$Xpd$%456UZ#1m!2;R?}*o-;q)Be)73pRh^9gw$AqH|$^Eau8I~Rto_H0I z$56w^7KV4F;XA)g(ft~PTKy3?UOa`>*T%D9;C>U%Ie>(5i&&+R6XME?)@XFCM}7Ac zI997ti;G2L`Tta+r5|l3olj-|>W08V<{NZ@6)zc4Yf%G1VAVodqbDk&=$DgWCg9}b z|HSKX`oSFGLBp4-bqBH-m<*mXdH*7=p9IbTQsFOx>><(cu-v?_6m&=)52}T)37f7{ zv7yFmqIp@`C#czHf;GQfi^eqj&|Ze5*DtjeU9Z`vE7ld8cr8jF3jo@L5q>Iq4T6S< z4f2}#Qu1ulI{W_KS8AdZO03EkZ zK<1P$x}lfw#pL709^eQ&6OOt6s5p!QM~oY=a|dG45QA#WY&@TvaY8#=^_n2&w?v~P zewp$G()3HoLobIG^3X}HZ(9U!K~OWJINN1R$TM-jAi6Cu-Vlr<;*jE5XGrsfe3b(W zbG<-^8u2sifhk&9twASPqAe$Yf65wVvSy;l)J`*|vW6V}27n{HoU2%9shS;*0!Mgx z^3m^p;0UWy^Dj_vX_wNg`#pHM46R7x_okQGHpEbQ`7uqNFcyAI#-JlK_6S(D^8slzK~?}VY=T@xt>A9G)eV3QXb`In z>GU^krf&Af{1C7V_jER-8K0Dy(9SY827x1D<5FOnFBKcZz!9+#1Okj@xRfvGx2;5M zwD@lg7!YLk4rodj%`KTW8r4ZM^OcY|d_1?&Cw#2e!xCpMsxoc#OoF7>FU^LFM1Re+ zSwDzzD*bCJ8xq$qOL?egW!fIr1u^8lC2?pT6Du@pOw)-zT{sj1&X;*U{oivE2S>-i zp;6sTNBQDe%@-3qH}5SkcU2=q`gIl%cEYYBjlNQtW*6$mzm}rv-+xEcu^z9mK-aNoQ0>9 zS&l9A#9fRnM8|xovBd*MVr=2wHz6rsoHXms-x8!281j`tY?#OM)Vd2Cig_3Kr1c#+ zt~Sb=iJq3KIrqKj{-&lo>1Do@?({o5)9L;^*1;ZiZ*4cPmkJIOp< z%!l8D?&oN_(-#VGR2niq^TB(eF^*|*$o2U>AhfsQBZ+qYGw2W+Pc_c>X}Z&>NLJ7< zYs?dl`BMF~PLr9&s4f0zfL{6)_ABhSA)%0G;#eiTIT$L295SAH!;b(`wpc-Ycykwh zIAcJA5YjSgWrAD|hy$jWZ1qm9ZUoLrQ>#`$3YREe>V;ro4MMHrz!`*#C!?(1BQ{`a z^&ncM&>AMtSqYKc$4-lT zp@sW?3-|pN?yD`_*+r+Ld$EQ4fQ9>jg?puiJN>rWsaw9(!kvEJ++^qC0~YRHox5D^ z_<=LoZlX=Ru#f2;Y>BnSL$@+!@Urw^uF`^3NxLi&H4#pFj7@|iVr*qU=yOf^&V@z? z{gQELjXGmwO5N|6LU+~QKR~^T2bI4jI$xFjYfyQ4a-7T8s@Sk$sg`zG^g5;fPMZQ# zjFs$G@~9D@c(>9*K~~S#qfSOko{E-J;+|#U-e=+7XW@RK&RzPQekgLfnAf#XF>laR zYT-~?OcbkfrKgRe6XBdf%-;t;P8ajK%xW|?$Sid~K85ZoHaK@6QTz54Ze}H-wcPoEQK7*8WD=$xubNR4} z4Vwd&GG7+GPHCL?D#~gGDd~p|O%Yz)j|eb9R+nQ7DIqdix>U5B68Cxw_x%>``z_qP z7Vh1r#eK7d`+$Y}fQ9?b7Vf)Gi~Efh?guQ~4_LSdE!_J~i+iJm`=EvUpoRNZ3->*z z#l6|W{iuaIJ+CxJ9eu;d9CiJt#l6kKoxXEq;#E9k;lAI(egA234_de%w{Smh;r@LK z_kq*m9=32Fws0S|aDVoF;vTbbPg%I9EZkqPa6fQbx_4Q))3?UVem`m9{+5ON;AwHc z-NJp$!hOub{TzsAj`^df#l73YovC?8jr_$-%~lGsn!cB0=00><+;>{I=UBMsSh%mW za6f)p+;>~J=UTYuTDaF+xDTHe_xmi|^DNx+EZlE=pSbr~xH~M|9Tx7*7VfFj()}|Q z?gbX^1s3ihox5Dub!Se#uG3BnwZ5a)w1$<8T&0{;S^ziwdcRK#o528z;KZJud_w`l zrJWXPGOIPML1wA@BU9+E)_xzLUd4sVUz4v_OA3{jC&#&bkBSZ35`$$#)}q%btt#^s zWi^hK?1l}wFBGJBce>?Q)3YRrBco+ZMawC1FR*a$vvBXTa4*%lOTT|@3cstE*R@bF zZ_rd~!Sdx!`~!%2dR{bL%~_JeTZIUY;E1@=H~0 zOcC>%UZ)gw@9O6O^29!@ML6JG;=eP%&@NRBDl{wD=+xEGuj_v04sjTY{W7Vhup+-1zq$(p{u>mF47-QZ=} z-wTx%;F*5C-|M;pFqm$R(`8ou-5|5nomRq=jdiNOe}H-ww<&*3(cjyYmnX-${3R6| zQ}lODuT$#pk0{EjFP9W5c@(6$P-&qcs}JZ=C!?iQMawC1@3(L-wQw)Ba6hVZmwsP8 zh2Pb>PS--kyg^f`MVZp#1BiLr!AuwPy38u(4KhpJ_e`O?iun&vui`T0ugT-Nq)d5v za-7Q_Q?X&YIDPoho&sxnol?~8R+LpdmpGI>3R3J)S}4fs{d&~NXmP7(IVJ8pE!^`g z-198lAF^=wo)-6R3-??L_goA2-4^bfPmBBQ7VbF~?l~6j-4^bRr^UU?!kt;TGYj`E z7Vd4Q#XV->KBjj4D#nV()R>?kt34L(;nU(Cws1db;ZC2Tl&d)T9CodRd)H}k4_dgV zEZkET?)et(-KWL9&BA@y!hP7nJ;%a*_i1r&ws1dg;eOo0eJo4!g&b}APK$e^h5L|& z`;dkEu!Z}c)8c-kh5Jzp_oEi>M|JLUj@t*wWa~OLzw30={BGbSZP>50Krc_f-tRRn z(VuR9*JW1oyFq5DJH4A`GTqhu{sHP$T%bnC$>;8p0yVBqj&u2aDmHB9PgRrM)Mw*= zr0I@##j3aG;cbP4L)XioA#``(Ojy8-|366k5a0jMrD;U-`HNf#|KGlA`-lVA?IAx~T2m!L+WU;#d zQST!Xnm!1~0jZ^cJW8!h5`Gg9dJY0o(i%g6^lS0}%u;~RC1mahbToyxGbWyuD8K(1 zIGZ(12|E`9=deaO9FOsD`Zt>NS`3_S6R-7v(2Os<6Wtz-1v(&s)~drF#QSIP{ZnoY z;_jo@236xn?a+#}6q+`Ij{45NfW!b%yAlEE281p>67C0NH%tK&NjhHzM13YuwE8a5 zG1>4}fDD*)9|6Q1hcJsK)O()%e)H^brLA( z^Z|0z)avVi(9VVG1O4W<+zZHYlMNpR0?3zaLkZf0O`8OI7Y<*QJ)wW zl=lLnR?7nNBp_uVL?r?F1<^5C<9C4Mn!IxokZw&=E(aimCcW(VZnk<_At-+gkYQ77 ztOvv#t2Y4xRt9AUm`}7?^ z`b-ke#Fxp;J#Hx=WtyGqf`LF7G}NwNXu1|SCpG)fw-)K$KHb36`%X1*9HxG8Js@o+ z30na%bB_b!Hc6NOq`;)bKLc_U5Ryg6a|{r=bWL9dq#N9YJeVunX+_j;iupHy(`DlI z4j>ND(J7yWw`7?|{w09qYPu8G3P1`qixFf4AY~?;ARuc0C1k!AklTSPB&1)+@&^$= zCOV%2j>80b6cD%8ig-N%NS8^k9|KaL**O}Egqk|SEYC#eIB?9Ce+`g6Q-sgNz~a#8 z5U=@w+=o=Rb2$w@CQX|FX*AK<28jB6g3x_GAOo33I!^+!+r;Y#(J|q?0LYMu*Pj6y zgaEp~a_~~`eiNPZ=r!L!(8rcb0T~8F*TMrxX})o6xgL-Klf||J(r<#?2S_(>rQ&cO zAbBS4{{#rlDLSuT1L8Hw{0BhL$RJ?`-Wj&X_%2Icl=len4_e zl)nu~mu5r0a{(Q5JRbv2*wktmkT$IqN%&_#XsFe_JO}R;GmnrL0s=A;$Jat*mWUtG z2Z_R^z{xf7x(bj|6QmXp8pQRTR1+ZkO*V`H(r=2@U4V3>p>D%Z1G48LBc1((qgfTm z>wWdPu=L4eGEdalo8)e>rD@>eAwr6!!~0ijEev4{oI z14uW2w}#T950Emn(skblNP$V7ZvkQ+jeiIT*+u8|TR`a2A#VdRWb)1&yd901WL^x& z5KIb3OB-GR2+in3U08lSAdM#7Hv-b9Nr)LF7ziOYGzglq4#F|Dx*d@HCY;@Xl$j*_ zpMdPiC+{fkhXFZYYBdbVV5U*#zXH;X7P=Of;!E;oi){d;Pf`_n`2Y!_Rc=^Rvf3UsT3oadj zSRmr|hnjeNFt;7)-qNKYv9e(1KsOT%osYj|F4V=16DE*U}kj0z3Zdfk_d! zhu#xjG~PKGUR8&`HBgQhUrfdd@1gU>wub|(!yf`_Gs+fJF^;FpD%YeI>}vb~J$~n& ze!bk|!B4%GH>~Hs!0M{4wcyH^7zx`!5_++S1xXGN@&WmAF+KAKvKSzLk8+>wVaf-)iBRjs#>3a&7*ouZeyF%8K6%U(pE(Y2c$h#uons zWLraVyrr)x5RSEXhScjZt;9s2bq1S(8`fTr2>Z0Ru~@75A!WMT=;+cv0WK}y zt+=%4*wh}XPBW?e&6;h98ndnCE2^FHh3HjICp?0ms_;but?f7tiQsoXsGkX7b07`u zL1*(ve0BKO)W*u=TebuPzB<|l8}hzQ?XfmrRS4E$+!ot3`}IP)ojU$5?P%pqZM=2q031;)EeB zPkj)qL0CYxhy=pW)Q9(MgFuHrax1-8metf>p)lgaEt95y5D#VZL(ywLvPNjhlT8c=G_}lSn z9o3nmu?ASZ+8=9kMf714FTysw!k76b?h2A3-i%6m`ECtt7p_?mMrVaShWe%`Q`Np8 zVheRX{3@Ifi3s?cn>7OFhGLva$BzU$Ix#LNqN<6n-cvVehxSnyKqP(MM?Cy7o}B*Cidy%*FEU8$`bm7GEETNxXHP5odEVUNlbOn_gMb ziQq`1LG zZAP7Vx;D(cVyvLB#`zU~E|b4?ipjDn`dR}qUuQgqLt2^z5rq&KFdCZhGbCh|ZN{QM z=KDmv9pl8rZWAWN&Lxhar#(t%XUymCh_(uR*f{EI*(Tp~HnG#iYnn(tj1InL|Mp;e zYg>#d0QJ_}@YX0DaGS8AhQP~(Y4t_SJXrd~L`08YSID`HiPz}rMgAsfy(oUYaCJ$^ zsuEbmH~CmVU0ajehpDo;y;B@Qh47|7r9Gw|M87zu^if2h_u>Dofk-G2T(#2YM?Vum z%lm>4lNH_?)*k5$aq=<0n1eCuKp5k%d<(*wokX!N5Uc16MLUCm3NOQ}<^9b%OMkeX z{DKhi(aQ+oovr9vzF?8B$XAFd3~d`iZG55D>{9dZy7nL@B&yTtPQPRm!pKuZQSgyw zVv%G3U>Vwqj>c^i;~td-@rFRCOzQ>iIX>>HwPM=xM65h86~tgozVh^8EQDEUG8HP( zAWIe&afhDm@ke7Ad-*)XO)n!0GZk#q98hlPKo>__vRIT)A5tE`=*XCUP2S%GJ{Ypv zo1)xLQKHe=LUN-E(Haoz9de-N{xo0kxk))f3y2AOna@m|emo(90h!M;{#!aDzG!@l zc&OsrikBzT5{icoxg3w`lqrQVDg!~7r~)%*JDjBrs@zc1SW^!I<7~gN9m`37@Y;AF zvRxXSJD&W!6#yQ2IHfU*VH!FViZ~_G*-T^&y;gJ{av^#T)1yWcBCUIh_|n>|X;}kI z)9-~a6D&SefO2{G;8`DxBHA#M#c4%{*Yu<-@2l`d!-1yumiDH!SjA{f;YD_vd>9f- z64j@)PNc#FV?fv#g2GT~){rB$AY$qpnn6t4hxGn}IV94#Ev?508<9)Q`#HgdZ&#(% z;y0h;*c>MSZRyl{K+36a6NPO0z*oa(PYkOv z#=Y2~VwpM3C@aTu8bmbtw0_Vmk3yvx#L%QVNjNP|JOTgK3A*Y8!IQ4*6k+;a!^$|H z>jH`{$}Nb2r!#6AacI{iJvrI1hgA$t3pBe(zqvvfO)X>6R6Ay2KmGukk6PFa`}nb{ zZV7%etQFPPV#*296jN#(;awV&z1(zQecBr0&ZR+C&PtdTXkCTPhCj-u@yYa0pMq83 z(wv8V0BxAWXxMCsg(_#g3Y#g#H_a(heEDR5s^Nt6NE;o}#!7Y6K&u}tPgD?4ca`Uy zKA&+;kkL((v*wtomnMA7Qq!RnJ#D#aR$X6B0h@+cqfq?gLYi~7HZ=t?-|5Z~7H*PF zv=EWw#00~FwvN$p)0QK&!BQ!I&cW&{u#6z?cN~0y0HZl;J41quf zmmi-%oER;x3#Rtlq=tUtB0M4=_D$`Iv@VLRubSb^!@J=WP9YdJPLnQt)V^FfTlE03 z0-+_NZ<}E{fHZUlEaaCT6wxG_Y_rTKEA#e7hNN-%PM>!4nY%MJtP&d(Ea)sF5=pmB zTdR|W#W@E&Xq^qo$>zyyD$2xJj5OvrPg^#MeyVII&7$5bj$#L25T=dG!f#>zQ*N>e z%mL~7!pTR&OWNwJNe+6#kZFU1d7p#na?(A7G`f5haQbG3h6lr>OuWQX|4HUODUA8R zWP;fmqnTWd^HIgPUKTw+W>8mOJJT>oEX=Dn!PMk;ns7{KHZpXzjhPmo>MU3gRmYyndh+GbM5_?3t5GLIA5+_~^yQ7%f~Bvw2Ogc~{%q}dGN_D4Kq6?h6CE|i^K)`T2+N_557|0T{;?Nhq-s@D zt?DM(oRXL1Ks&)UoyVo#rHt}SJ<+AlL@@JvT^wtNZkk%+qt9}{!?~K}=uHhhYMqic VsG9a;hBGGWs%kzIJxUug{|`Uq*ysQN literal 0 HcmV?d00001 diff --git a/exercise/模板.txt b/exercise/模板.txt index c9990e8..7da6816 100644 --- a/exercise/模板.txt +++ b/exercise/模板.txt @@ -62,4 +62,62 @@ Windows控制台设置为UTF-8;提示输入n、m与每条边x、y、z;运行 时间与空间复杂度 时间:O(n²) 选择与松弛;空间:邻接矩阵O(n²),辅助数组O(n)。 可能扩展 -改为邻接表+最小堆实现,将复杂度优化为O(m log n);统一输出为OJ格式仅输出数值或-1;增加输入范围校验与路径重建输出。 \ No newline at end of file +改为邻接表+最小堆实现,将复杂度优化为O(m log n);统一输出为OJ格式仅输出数值或-1;增加输入范围校验与路径重建输出。 + +exercise/查找.c 实验分析 + +功能描述 +读取整数个数n与n个整数,复制为sortedArr并用带索引的冒泡排序Bubble_Sort_With_Index排序,同时维护indexArr将排序后位置映射到原数组索引。打印排序结果。随后循环交互读取要查找的整数target与查找方法choice,支持:线性查找、二分查找(在有序数组上)、分块查找(在有序数组上)以及二叉搜索树查找。所有方法统一返回原数组中的索引;二分与分块通过indexArr映射,二叉树通过节点的idx返回。提供“退出程序”选项。 + +数据结构 +数组:nums[n]原始数据;sortedArr[n]排序副本;indexArr[n]排序位置到原索引的映射。 +二叉搜索树:TreeNode { int val; int idx; TreeNode* left; TreeNode* right; }。 +常量:MAX为输入规模上限(100000)。 + +辅助函数 +Linear_Search(arr, size, target):顺序扫描比较。 +Binary_Search(arr, size, target):在有序数组中二分定位并返回位置。 +Block_Search(arr, size, target):按块大小sqrt(size)定位块,块内线性扫描。 +Bubble_Sort_With_Index(arr, index, size):冒泡排序,交换元素同时交换index,实现稳定排序与原索引映射。 +BST_new/BST_insert/BST_free/BST_Search:构建与查找二叉搜索树,查找返回节点idx(原数组索引)。 + +核心算法 +线性查找:从左到右逐项比较。 +二分查找:每轮折半选中点,比较后缩小区间。 +分块查找:按块扫描,先用块尾与目标比较确定块,再在块内线性查找。 +二叉搜索树查找:按值大小关系在树上左/右移动查找。 +预排序:稳定冒泡排序,为二分/分块提供有序数据并维护indexArr以统一索引语义。 + +初始化与交互 +Windows控制台设置为UTF-8。 +读取n与n个整数,完成排序并打印有序数组。 +循环读取target与choice,按菜单执行查找并输出结果;选择5退出程序。 + +输入与输出 +输入:第一行n;随后读入n个整数;之后循环读入查询值与方法选择。 +输出:先打印排序后的数组;每次查询输出“找到了,目标元素的索引为:X”或“未找到目标元素。”。 + +代码特点 +统一索引语义:二分与分块通过indexArr映射回原索引;BST节点直接保存idx。 +稳定排序:仅在arr[j] > arr[j+1]时交换,保持相等元素相对次序。 +使用C99变长数组,简化输入规模驱动的存储。 +BST内存释放完整,避免泄漏;菜单交互支持多次查询与退出。 + +边界与异常处理 +校验n在[1..MAX]范围内。 +二分与分块依赖有序数组,程序已在进入查找前完成排序。 +BST不平衡,最坏情况下退化为链表;重复值只插入第一次出现的节点,查找返回该值的首次出现索引。 +基本输入未做范围与非法字符的深度校验。 + +时间与空间复杂度 +预处理排序:Bubble_Sort_With_Index时间O(n²),额外空间O(n)用于indexArr。 +线性查找:时间O(n),空间O(1)。 +二分查找:时间O(log n),空间O(1);返回某一匹配位置的原索引(不保证最左)。 +分块查找:时间O(√n)(定位块O(√n)+块内线性扫描O(√n)),空间O(1);通常返回该块内第一个匹配的原索引。 +二叉搜索树查找:平均时间O(log n),最坏O(n);空间O(n)(节点)。 +整体空间:数组O(n),BST O(n)。 + +可能扩展 +将预排序替换为快速排序或qsort,将预处理复杂度优化为O(n log n)。 +使用平衡BST或哈希表提高查找性能与一致性;二分查找改为返回最左/最右匹配以满足特定需求。 +增加输入范围校验、异常处理与批量查询支持。 \ No newline at end of file