µÚÊ®ÕÂÅÅÐò²Î¿¼´ð°¸

int index (RecType R[],int l,h,datatype key) { int i=l,j=h; while (i

{ while (i<=j && R[j].key>key) j--; if (R[j].key==key) return j; while (i<=j && R[i].key

printf(¡°Not find¡±) ; return 0; }//index

11. (1) [ÌâÄ¿·ÖÎö]´ÓµÚn¸ö¼Ç¼¿ªÊ¼ÒÀ´ÎÓëÆäË«Ç×£¨n/2£©±È½Ï£¬Èô´óÓÚË«Ç×Ôò½»»»£¬¼Ì¶øÓëÆäË«Ç×µÄË«ÇױȽϣ¬ÒÔ´ËÀàÍÆÖ±µ½¸ùΪֹ¡£

void sift(RecType R[],int n)

{ //¼ÙÉè R[1..n-1]ÊÇ´ó¶Ñ£¬±¾Ëã·¨°ÑR[1..n]µ÷³É´ó¶Ñ j=n; R[0]=R[j]; for (i=n/2;i>=1;i=i/2)

if (R[0].key>R[i].key){ R[j]=R[i];j=i;} else break; R[j]=R[0];

}//sift

(2)void HeapBuilder(RecType R[],int n) { for (i=2;i<=n;i++) sift (R,i); } 12. void sort (RecType K[],int n) { for (i=1;i<=n;i++) T[i]=i; for (i=1;i

for (j=1;j<=n-i;j++)

if (K[T[j]]>K[T[j+1]]) {t=T[j];T[j]=T[j+1];T[j+1]=t;}

}//sort

[Ëã·¨ÌÖÂÛ] ÉÏÊöËã·¨µÃµ½¸¨ÖúµØÖ·±í£¬T[i]µÄÖµÊÇÅÅÐòºóKµÄµÚi¸ö¼Ç¼£¬ÒªÊ¹ÐòÁÐKÓÐÐò£¬ÔòÒª°´TÔÙÎïÀíµØÖØÅÅKµÄ¸÷¼Ç¼¡£Ëã·¨ÈçÏ£º

void Rearrange(RecType K[],int T[],n)

//¶ÔÓÐn¸ö¼Ç¼µÄÐòÁÐK£¬°´Æä¸¨ÖúµØÖ·±íT½øÐÐÎïÀí·ÇµÝ¼õÅÅÐò {for(i=1;i<=n;i++) if (T[i]!=i)

{j=i; rc=K[i]; //ÔÝ´æ¼Ç¼K[i]

while (T[j]!=i) //µ÷ÕûK[T[j]]µ½T[j]=iΪֹ {m=T[j]; K[j]=K[m]; T[j]=j; j=m;} K[j]=rc; T[j]=j; //¼Ç¼R[i]µ½Î» }//if

}//Rearrange

13. (1) ¶ÑÅÅÐòÊǶÔÊ÷ÐÍÑ¡ÔñÅÅÐòµÄ¸Ä½ø£¬¿Ë·þÁËÊ÷ÐÍÑ¡ÔñÅÅÐòµÄȱµã£¬Æä¶¨ÒåÔÚÇ°ÃæÒѶà´Î̸µ½£¬Çë²Î¼ûÉÏÃæ¡°ËÄ¡¢Ó¦ÓÃÌ⡱µÄ43ÌâºÍ45Ì⣨4£©¡£¡°É¸Ñ¡¡±ÊǶÑÅÅÐòµÄ»ù´¡Ëã·¨¡£ÓÉÓÚ¶Ñ¿ÉÒÔ¿´×÷¾ßÓÐn¸ö½áµãµÄÍêÈ«¶þ²æÊ÷£¬½¨¶Ñ¹ý³ÌÊÇ´Ó´ýÅÅÐòÐòÁеÚÒ»¸ö·ÇÖն˽áµã?n/2?¿ªÊ¼£¬Ö±µ½¸ù½áµã£¬½ø

ÐС°É¸Ñ¡¡±µÄ¹ý³Ì¡£¶Ñ½¨³Éºó£¬¼´¿ÉÑ¡µÃÒ»¸ö¹Ø¼ü×Ö×î´ó»ò×îСµÄ¼Ç¼¡£È»ºó¶Ñ¶¥ÔªËØÓëÐòÁÐÖÐ×îºóÒ»¸öÔªËØ½»»»£¬ÔÙ½«ÐòÁÐÖÐǰn-1¼ÇÂ¼ÖØÐµ÷ÕûΪ¶Ñ£¬¿ÉÑ¡µÃÒ»¸ö¹Ø¼ü×ִδó»ò´ÎСµÄ¼Ç¼¡£ÒÀ´ÎÀàÍÆ£¬Ôò¿ÉµÃµ½ÔªËصÄÓÐÐòÐòÁС£

(2) void Sift(RecType R[]£¬int i£¬int m)

{ //¼ÙÉèR[i+1..m]Öи÷ÔªËØÂú×ã¶ÑµÄ¶¨Ò壬±¾Ëã·¨µ÷ÕûR[i]ʹÐòÁÐR[i..m]Öи÷ÔªËØÂú×ã¶ÑµÄÐÔÖÊ

R[0]=R[i];

for(j=2*i; j<=m; j*=2)

{ if(j

if(R[0].key

}//for

R[i]=R[0]; }//Sift

void HeapSort(RecType R[]£¬int n) { //¶Ô¼Ç¼ÐòÁÐR[1..n]½øÐжÑÅÅÐò¡£ for(i=n/2;i>0;i--) Sift(R,i,n);

for(i=n;i>1;i--){ R[1]<-->R[i]; Sift(R,1,i-1);}//for }//HeapSort

(3)¶ÑÅÅÐòµÄʱ¼äÖ÷ÒªÓɽ¨¶ÑºÍɸѡÁ½²¿·Öʱ¼ä¿ªÏú¹¹³É¡£¶ÔÉî¶ÈΪhµÄ¶Ñ£¬¡°É¸Ñ¡¡±ËùÐè½øÐеĹؼü×ֱȽϵĴÎÊýÖÁ¶àΪ2(h£­1)£»¶Ôn¸ö¹Ø¼ü×Ö£¬½¨³ÉÉî¶ÈΪh(=?log2n?+1)µÄ¶Ñ£¬ËùÐè½øÐеĹؼü×ֱȽϵĴÎÊýÖÁ¶àC (n)£¬ËüÂú×ãÏÂʽ£º

11i?1C(n)??2i?h?1h?1?2(h?1)??2i?h?1h?3i?(h?1)

?2?2h?2?2?22?3???2?(h?1) ???(h?1)/2h-1?2(1/2?2/2hh?3/2(log23)

?2?2?2?2n)?1?4n

µ÷Õû¡°¶Ñ¶¥¡±n-1´Î£¬×ܹ²½øÐеĹؼü×ֱȽϵĴÎÊý²»³¬¹ý£º2(?log2(n-1)?+ ?log2(n-2)?+ ?+log22)<2n(?log2n?)Òò´Ë£¬¶ÑÅÅÐòµÄʱ¼ä¸´ÔÓ¶ÈΪO£¨nlog2n£©¡£ 14. PROC LinkedListSelectSort( head: pointer);

//±¾Ëã·¨Ò»ÌËÕÒ³öÒ»¸ö¹Ø¼ü×Ö×îСµÄ½áµã£¬ÆäÊý¾ÝºÍµ±Ç°½áµã½øÐн»»»;ÈôÒª½»»»Ö¸Õ룬ÔòÐë¼ÇÏ //µ±Ç°½áµãºÍ×îС½áµãµÄǰÇýÖ¸Õë

p:=head¡ü.next; WHILE p<>NIL DO

[q:=p¡ü.next; r:=p; //ÉèrÊÇÖ¸Ïò¹Ø¼ü×Ö×îСµÄ½áµãµÄÖ¸Õë WHILE NIL DO

[IF q¡ü.data

q:=q¡ü.next; ]

IF r<>p THEN r¡ü.data<-->p¡ü.data p:=p¡ü.next; ]

ENDP;

15. void QuickSort(rectype r[n+1]; int n) // ¶Ôr[1..n]½øÐпìËÙÅÅÐòµÄ·ÇµÝ¹éËã·¨

{typedef struct

{ int low,high; }node

node s[n+1]£»//Õ»£¬ÈÝÁ¿×ã¹»´ó

int quickpass(rectype r[],int,int); // º¯ÊýÉùÃ÷ int top=1; s[top].low=1; s[top].high=n; while (top>0)

{ss=s[top].low; tt=s[top].high; top--; if (ss

{k=quickpass(r,ss,tt);

if (k-ss>1) {s[++top].low=ss; s[top].high=k-1;}

if (tt-k>1) {s[++top].low=k+1; s[top].high=tt;} }

} // Ëã·¨½áÊø

int quickpass(rectype r[];int s,t) {i=s; j=t; rp=r[i]; x=r[i].key; while £¨i

{while (i

while (i=r[j].key) i++; if (i

r[i]=rp;

return (i);

} // Ò»´Î»®·ÖËã·¨½áÊø

[Ëã·¨ÌÖÂÛ]¿É¶ÔÒÔÉÏËã·¨½øÐÐÁ½µã¸Ä½ø£ºÒ»ÊÇÔÚÒ»´Î»®·Öºó£¬ÏÈ´¦Àí½Ï¶Ì²¿·Ö£¬½Ï³¤µÄ×ÓÐòÁнøÕ»£»¶þÊÇÓá°ÈýÕßÈ¡Öз¨¡±¸ÄÉÆ¿ìËÙÅÅÐòÔÚ×Çé¿öϵÄÐÔÄÜ¡£ÏÂÃæÊDz¿·ÖÓï¾äƬ¶Î£º

int top=1; s[top].low=1; s[top].high=n;

ss=s[top].low; tt=s[top].high; top--; flag=true; while (flag || top>0)

{k=quickpass(r,ss,tt);

if (k-ss>tt-k) // Ò»ÌËÅÅÐòºó·Ö¸î³É×óÓÒÁ½²¿·Ö

{if (k-ss>1) // ×ó²¿×ÓÐòÁг¤¶È´óÓÚÓÒ²¿£¬×󲿽øÕ» {s[++top].low=ss; s[top].high=k-1; } if (tt-k>1) ss=k+1; // ÓÒ²¿¶ÌµÄÖ±½Ó´¦Àí

else flag=false; // ÓÒ²¿´¦ÀíÍ꣬ÐèÍËÕ»

}

else if (tt-k>1) //ÓÒ²¿×ÓÐòÁг¤¶È´óÓÚ×󲿣¬ÓÒ²¿½øÕ» {s[++top].low=k+1; s[top].high=tt; }

if (k-ss>1) tt=k-1 // ×󲿶̵ÄÖ±½Ó´¦Àí

else flag=false // ×󲿴¦ÀíÍ꣬ÐèÍËÕ»

}

if (!flag && top>0)

{ss=s[top].low; tt=s[top].high; top--; flag=true;}

} // end of while (flag || top>0) } // Ëã·¨½áÊø

int quickpass(rectype r[];int s,t) // Óá°ÈýÕßÈ¡Öз¨¡±½øÐпìËÙÅÅÐòµÄÒ»´Î»®·Ö { int i=s, j=t, mid=(s+t)/2; rectype tmp;

if (r[i].key>r[mid].key) {tmp=r[i];r[i]=r[mid];r[mid]=tmp } if (r[mid].key>r[j].key)

{tmp=r[j];r[j]=r[mid];

if (tmp>r[i]) r[mid]=tmp; else {r[mid]=r[i];r[i]=tmp } }

{tmp=r[i];r[i]=r[mid];r[mid]=tmp }

// ÈýÕßÈ¡ÖУº×î¼Ñ2´Î±È½Ï3´Î¸³Öµ£»×î²î3´Î±È½Ï10´Î¸³Öµ rp=r[i]; x=r[i].key;

while £¨i

{while (i

while (i=r[j].key) i++; if (i

r[i]=rp; return (i);

} // Ò»´Î»®·ÖËã·¨½áÊø

5 7 16. £¨1£© £¨2£©

40 80 70 70 77777777¼ÓÈë5ºó ¼ÓÈë80ºó

30 30 9 9 7 15 10 15

45 50 30 20 12 10 45 50 30 20 12 40

£¨3£©[ÌâÄ¿·ÖÎö]´Ó²åÈëλÖýøÐе÷Õû£¬µ÷Õû¹ý³ÌÓÉϵ½ÉÏ¡£Ê×Ïȸù¾ÝÔªËØ¸öÊýÇó³ö²åÈëÔªËØËùÔÚ²ã´ÎÊý£¬ÒÔÈ·¶¨Æä²åÈë²ãÊÇ×î´ó²ã»¹ÊÇ×îС²ã¡£Èô²åÈëÔªËØÔÚ×î´ó²ã£¬ÔòÏȱȽϲåÈëÔªËØÊÇ·ñ±ÈË«Ç×С£¬ÈçÊÇ£¬ÔòÏȽ»»»£¬Ö®ºó£¬½«Ð¡¶ÑÓë׿Ïȵ÷¶Ñ£¬Ö±µ½Âú×ãС¶Ñ¶¨Òå»òµ½´ï¸ù½áµã£»Èô²åÈëÔªËØ²»Ð¡ÓÚË«Ç×£¬Ôòµ÷´ó¶Ñ£¬Ö±µ½Âú×ã´ó¶Ñ¶¨Òå¡£Èô²åÈë½áµãÔÚ×îС²ã£¬ÔòÏȱȽϲåÈëÔªËØÊÇ·ñ±ÈË«Ç×´ó£¬ÈçÊÇ£¬ÔòÏȽ»»»£¬Ö®ºó£¬½«´ó¶ÑÓë׿Ïȵ÷¶Ñ£»Èô²åÈë½áµãÔÚ×îС²ãÇÒСÓÚË«Ç×£¬Ôò½«Ð¡¶ÑÓë׿Ïȵ÷¶Ñ£¬

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)