ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2026/5/7 16:32:16ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£
©À©¤©¤©È 10©¦ ¡Ä ©¦ ©¸©¤©¤©¼
(2)ÏßÐÔ̽²é·¨ÈçÏÂͼ£º
ϱê 0 1 2 3 4 5 6 7 8 9 10 ©°©¤©Ð©¤©Ð©¤©Ð©¤©Ð©¤©Ð©¤©Ð©¤©Ð©¤©Ð©¤©Ð©¤©Ð©¤©´ T[0..10]©¦33©¦1 ©¦13©¦12©¦34©¦38©¦27©¦22©¦ ©¦ ©¦ ©¦ ©¸©¤©Ø©¤©Ø©¤©Ø©¤©Ø©¤©Ø©¤©Ø©¤©Ø©¤©Ø©¤©Ø©¤©Ø©¤©¼ ̽²é´ÎÊý 1 1 1 3 4 1 7 8
ÓÃÀÁ´·¨µÄ²éÕҳɹ¦Æ½¾ù²éÕÒ³¤¶ÈΪ£º ASLsucc=(1*4+2*3+3*1)/8=1.625
²éÕÒʧ°Üʱƽ¾ù²éÕÒ³¤¶ÈΪ£º
ASLunsucc=(2+3+1+0+0+0+2+0+0+0+0)/11=0.73
ÓÃÏßÐÔ̽²é·¨²éÕҳɹ¦Ê±Æ½¾ù²éÕÒ³¤¶ÈΪ£º ASLsucc=(1+1+1+3+4+1+7+8)/8=3.25
²éÕÒʧ°Üʱƽ¾ù²éÕÒ³¤¶ÈΪ£º
ASLunsucc=(9+8+7+6+5+4+3+2+1+1+1)/11=4.3
×°ÌîÒò×Ó¦ÁÀÁ´=4/11=0.36 ¦ÁÏßÐÔ̽²é=8/11=0.73
22.¼Ù¶¨ÓÐk¸ö¹Ø¼ü×Ö»¥ÎªÍ¬Òå´Ê£¬ÈôÓÃÏßÐÔ̽²é·¨°ÑÕâЩͬÒå´Ê´æÈëÉ¢ÁбíÖУ¬ÖÁÉÙÒª½øÐжàÉÙ´Î̽²é? ´ð£º
ÖÁÉÙÒª½øÐÐ1+2+3...+k-1+k´Î̽²é¡£
Ò²¾ÍÊÇ˵£¬ÔÚÉ¢ÁбíµÄÒ»Á¬´®Á¬Ðø¿Õ¼äÄÚ£¬µÚÒ»¸ö¹Ø¼ü×ÖÖ»Ðè̽²éÒ»´Î£¬µÚ¶þ¸ö¾ÍҪ̽²é2´Î£¬Èç´ËÕâ°ã£¬µÚk¸ö¹Ø¼ü×Ö¾ÍҪ̽²ék´Î²ÅÄÜÕÒµ½Î»Öôæ·Å¡£ËùÒÔÖÁÉÙÒª°ÑËüÃÇÈ«¼ÓÆðÀ´²Å¹»¡£
23.Ϊʲô˵µ±×°ÌîÒò×ӷdz£½Ó½ü1ʱ£¬ÏßÐÔ̽²éÀàËÆÓÚ˳Ðò²éÕÒ?Ϊʲô˵µ±×°ÌîÒò×ӱȽÏС(±ÈÈç¦Á=0.7×óÓÒ)ʱ£¬É¢ÁвéÕ񵀮½¾ù²éÕÒʱ¼äΪO(1)? ´ð£º
µ±¦Á·Ç³£½Ó½ü1ʱ£¬Õû¸öÉ¢ÁÐ±í¼¸ºõ±»×°Âú¡£ÓÉÓÚÏßÐÔ̽²é·¨Ôڹؼü×ÖͬÒåʱ½â¾ö³åÍ»µÄ°ì·¨ÊÇÏßÐÔµØÏòºó²éÕÒ£¬µ±Õû¸ö±í¼¸ºõ×°Âúʱ£¬Ëü¾ÍºÜÀàËÆÓÚ˳Ðò²éÕÒÁË¡£
µ±¦Á±È½ÏСʱ£¬¹Ø¼ü×ÖÅöײµÄ¼¸ÂʱȽÏС£¬Ò»°ãÇé¿öÏÂÖ»Òª°´ÕÕÉ¢Áк¯Êý¼ÆËã³öµÄ½á¹ûÄܹ»1´ÎÐÔ¾ÍÕÒµ½ÏàÓ¦½áµã£¬Òò´ËËüµÄƽ¾ù²éÕÒʱ¼ä½Ó½üÓÚ1.
24.Éè˳Ðò±íÖйؼü×ÖÊǵÝÔöÓÐÐòµÄ£¬ÊÔдһ˳Ðò²éÕÒËã·¨£¬½«ÉÚ±øÉèÔÚ±íµÄ¸ßϱê¶Ë¡£È»ºóÇó³öµÈ¸ÅÂÊÇé¿öϲéÕҳɹ¦Óëʧ°ÜʱµÄASL. ´ð:
typedef struct{ KeyType key£»
InfoType otherinfo£» //´ËÀàÐÍÒÀÀµÓÚÓ¦Óà }NodeType£»
typedef NodeType SeqList[n+1]£» //nºÅµ¥ÔªÓÃ×÷ÉÚ±ø
int SeqSearch(Seqlist R£¬KeyType K)
{ //Ôڹؼü×ÖµÝÔöÓÐÐòµÄ˳Ðò±íR[0..n-1]ÖÐ˳Ðò²éÕҹؼü×ÖΪKµÄ½áµã£¬ //³É¹¦Ê±·µ»ØÕÒµ½µÄ½áµãλÖã¬Ê§°Üʱ·µ»Ø-1 int i£»
R[n].key=K£» //ÉèÖÃÉÚ±ø
for(i=0£»R[i].key<=K;i--)£» //´Ó±íǰÍùºóÕÒ if (i µÈ¸ÅÂÊÇé¿öϲéÕҳɹ¦ASL=(1+2+3+¡+n)/n µÈ¸ÅÂÊÇé¿öϲéÕÒʧ°ÜʱµÄASL=(1+2+3+¡+n+n+1)/(n+1) 25ÊÔд³ö¶þ·Ö²éÕҵĵݹéËã·¨¡£ ½â£º int BinSearch(SeqList R£¬KeyType K£¬int low£¬int high) { //ÔÚÓÐÐò±íR[low..high]ÖнøÐжþ·Ö²éÕÒ£¬³É¹¦Ê±·µ»Ø½áµãµÄλÖã¬Ê§°Üʱ·µ»ØÁã int mid£» //Öõ±Ç°²éÕÒÇø¼äÉÏ¡¢Ï½çµÄ³õÖµ if (low<=high){ //µ±Ç°²éÕÒÇø¼äR[low..high]·Ç¿Õ mid=(low+high)/2£» if(R[mid].key==K) return mid£» //²éÕҳɹ¦·µ»Ø if(R[mid].kdy>K) return BinSearch( R£¬K,low£¬mid-1)//ÔÚR[low..mid-1]ÖвéÕÒ else return BinSearch( R£¬K,mid+1£¬high)£» //ÔÚR[mid+1..high]ÖвéÕÒ } return 0£» //µ±low>highʱ±íʾ²éÕÒÇø¼äΪ¿Õ£¬²éÕÒʧ°Ü } //BinSeareh 26ÊÔдһËã·¨ÅÐ±ð¸ø¶¨µÄ¶þ²æÊ÷ÊÇ·ñΪ¶þ²æÅÅÐòÊ÷£¬Éè´Ë¶þ²æÊ÷ÒÔ¶þ²æÁ´±íΪ´æ´¢½á¹¹£¬ÇÒÊ÷ÖнáµãµÄ¹Ø¼ü×Ö¾ù²»Ïàͬ¡£ ½â£º Óɶþ²æÅÅÐòÊ÷µÄ¶¨Òå¿ÉµÃ£º¶þ²æÅÅÐòÊ÷ÖÐ×ó×ÓÊ÷µÄËùÓнáµãµÄÖµ¶¼Ð¡ÓÚ¸ù½áµãµÄÖµ£¬ËùÓÐÓÒ×ÓÊ÷ÖнáµãµÄÖµ¶¼´óÓÚ¸ù½áµãµÄÖµ¡£ÄÇôֻҪ¶Ô´ýÅж¨µÄ¶þ²æÊ÷ÖеĽáµã°´²ã±éÀú²¢Åжϼ´¿É¡£ÔÚ¸ÃËã·¨ÖÐÒªÓõ½¶ÓÁб£´æÒѱéÀúµÄ½áµãÖ¸Õë¡£ typedef BinTNode *DataType;//Ñ»·¶ÓÁÐÖÐÔªËØÎª¶þ²æÊ÷½áµãÖ¸Õë int BinSortStree(BinTree T) { CirQueue Q; BinTNode *p; if (!T) return 1;//¿ÕÊ÷Ϊ¶þ²æÅÅÐòÊ÷ InitQueue(&Q); EnQueue(&Q,T); while(!QueueEmpty(&Q)) { p=DeQueue(&Q); if (p->lchild) if (p->data if (p->data>p->rchild->data) return -1;//²»ÊǶþ²æÅÅÐòÊ÷ else EnQueue(&Q,p->rchild); } return 1;//ÊǶþ²æÅÅÐòÊ÷ } 27.ÊÔдһµÝ¹éËã·¨£¬´Ó´óµ½Ð¡Êä³ö¶þ²æÅÅÐòÊ÷ÖÐËùÓÐÆäÖµ²»Ð¡ÓÚxµÄ¹Ø¼ü×Ö¡£ÒªÇóËã·¨µÄʱ¼äΪO(lgn+m)£¬nΪÊ÷ÖнáµãÊý£¬mΪÊä³ö¹Ø¼ü×Ö¸öÊý(Ìáʾ£ºÏȱéÀúÓÒ×ÓÊ÷£¬ºó±éÀú×ó×ÓÊ÷)¡£ ´ð£º typedef int KeyType£» //¼Ù¶¨¹Ø¼ü×ÖÀàÐÍΪÕûÊý typedef struct node { //½áµãÀàÐÍ KeyType key£» //¹Ø¼ü×ÖÏî InfoType otherinfo£» //ÆäËüÊý¾ÝÓò£¬InfoTypeÊÓÓ¦ÓÃÇé¿ö¶ø¶¨£¬ÏÂÃæ²»´¦ÀíËü struct node *lchild£¬*rchild£» //×óÓÒº¢×ÓÖ¸Õë } BSTNode£» typedef BSTNode *BSTree£» void OUTPUTNODE(BSTree T,KeyType x) {//´Ó´óµ½Ð¡Êä³ö¶þ²æÅÅÐòÊ÷ÖÐËùÓÐÆäÖµ²»Ð¡ÓÚxµÄ¹Ø¼ü×Ö if (T) { OUTPUTNODE( T->rchild,x); if (T->key>=x) printf(\ OUTPUTNODE( T->Lchild,x); } } 28.дһ¸ö±éÀúB-Ê÷µÄËã·¨£¬Ê¹Êä³öµÄ¹Ø¼ü×ÖÐòÁеÝÔöÓÐÐò¡£Ëã·¨ÖеĶÁÅ̲Ù×÷¿É¼Ù¶¨ÎªDiskRead¡£ ´ð£º #define Max l000 //½áµãÖйؼü×ÖµÄ×î´óÊýÄ¿£ºMax=m-1£¬mÊÇB-Ê÷µÄ½× #define Min 500 //·Ç¸ù½áµãÖйؼü×ÖµÄ×îСÊýÄ¿£ºMin=¡¸m/2(-1 typedef int KeyType£» //KeyTypeÓ¦ÓÉÓû§¶¨Òå typedef struct node{ //½áµã¶¨ÒåÖÐÊ¡ÂÔÁËÖ¸Ïò¹Ø¼ü×Ö´ú±íµÄ¼Ç¼µÄÖ¸Õë int keynum£» //½áµãÖе±Ç°ÓµÓеĹؼü×ֵĸöÊý£¬keynum<=Max KeyType key[Max+1]£» //¹Ø¼ü×ÖÏòÁ¿Îªkey[1..keynum]£¬key[0]²»Óᣠstruct node *parent£» //Ö¸ÏòË«Ç×½áµã struct node *son[Max+1]£»//º¢×ÓÖ¸ÕëÏòÁ¿Îªson[0..keynum] }BTreeNode£» typedef BTreeNode *BTree£» void travelBtree(BTree T){ //°´¹Ø¼ü×ÖµÝÔöÐòÊä³öB-Ê÷ÐòÁÐ int i; if (T){ for(i=0;i<=T->keynum;i++)//T->keynum¸ö¹Ø¼ü×ֵĽáµãÓÐT->keynum+1¿Ã×ÓÊ÷ { if (T->son[i]){ DiskRead(T->son[i]);//¶ÁÈë¸ù½áµãµÄµÚi¿Ã×ÓÊ÷ travelBtree(T->son[i]);//±éÀúµÚi¿Ã×ÓÊ÷