¹¢¹ú»ª - Êý¾Ý½á¹¹ - CÓïÑÔµÄÃèÊö - ¿Îºó´ó²¿·ÖϰÌâ´ð°¸[1]

Ëã·¨µÄʱ¼ä¸´ÔÓ¶È O(n)£» ÌÖÂÛËã·¨ÖмǼµÄ×î´óÒÆ¶¯´ÎÊý¡£

void Divide(int a[ ],int n)//°ÑÊý×éa ÖÐËùÓÐֵΪ¸ºµÄ¼Ç¼µ÷µ½·Ç¸ºµÄ¼Ç¼֮ǰ {

low=0;high=n-1; while(low

while(low=0) high--; // ÒÔ0 ×÷ΪÐéÄâµÄÊàÖá¼Ç¼ a[low]<->a[high];

while(lowa[high]; }

}//Divide

9£®8 ÊÔÒÔµ¥Á´±íΪ´æ´¢½á¹¹ÊµÏÖ¼òµ¥Ñ¡ÔñÅÅÐòµÄËã·¨

void LinkedList_Select_Sort(LinkedList &L)//µ¥Á´±íÉϵļòµ¥Ñ¡ÔñÅÅÐòËã·¨ {

for(p=L;p->next->next;p=p->next) {

q=p->next;x=q->data;

for(r=q,s=q;r->next;r=r->next) //ÔÚq ºóÃæÑ°ÕÒÔªËØÖµ×îСµÄ½áµã if(r->next->data

x=r->next->data; s=r; }

if(s!=q) //ÕÒµ½ÁËÖµ±Èq->data ¸üСµÄ×îС½áµãs->next {

p->next=s->next;s->next=q;

t=q->next;q->next=p->next->next; p->next->next=t;

} //½»»»q ºÍ s->next Á½¸ö½áµã }//for

}//LinkedList_Select_Sort

9£®9 ¼ÙÉ躬n¸ö¼Ç¼µÄÐòÁÐÖУ¬ÆäËùÓйؼü×ÖΪֵ½éÓÚvºÍw Ö®¼äµÄÕûÊý£¬ÇÒÆäÖÐºÜ¶à¹Ø¼ü×ÖµÄÖµÊÇÏàͬµÄ¡£Ôò¿É°´ÈçÏ·½·¨ÅÅÐò£ºÁíÉèÊý×énumber[v...w]ÇÒÁînumber[i]Ϊͳ¼Æ¹Ø¼ü×ÖÈ¡ÕûÊýI µÄ¼Ç¼Êý£¬Ö®ºó°´number ÖØÅÅÐòÁÐÒÔ´ïµ½ÓÐÐò£¬±àдË㷨ʵÏÖÉÏÊöÅÅÐò·½·¨£¬²¢ÌÖÂÛ´Ë·½·¨µÄÓÅȱµã¡£

void Enum_Sort(int a[ ],int n)//¶Ô¹Ø¼ü×ÖÖ»ÄÜÈ¡v µ½w Ö®¼äÈÎÒâÕûÊýµÄÐòÁнøÐÐÅÅÐò {

int number[w+1],pos[w+1];

for(i=0;i

pos[i]=pos[i-1]+num[i]; //pos Êý×é¿ÉÒ԰ѹؼü×ÖµÄÖµÓ³ÉäÎªÔªËØÔÚÅźõÄÐòÁÐ ÖеÄλÖÃ

for(i=0;i

·ÖÎö:±¾Ëã·¨²Î¿¼Á˵ÚÎåÕÂÈýÔª×éÏ¡Êè¾ØÕóתÖõÄË㷨˼Ïë,ÆäÖеÄpos Êý×éºÍÄÇÀïµÄcpot Êý×éÆðµÄÊÇÏàÀàËÆµÄ×÷ÓÃ.

9£®10 ÒÑÖªÁ½¸öÓÐÐòÐòÁÐ(a1, a 2,..., a m)ºÍ(a m+1 , a m+2 ,..., a n ),²¢ÇÒÆäÖÐÒ»¸öÐòÁеļǼ¸öÊýÉÙÓÚs,ÇÒs=?¡Ìn?. ÊÔдһ¸öËã·¨,ÓÃO(n)ʱ¼äºÍO(1)¸½¼Ó¿Õ¼äÍê³ÉÕâÁ½¸öÓÐÐòÐòÁеĹ鲢¡£

void SL_Merge(int a[ ],int l1,int l2)//°Ñ³¤¶È·Ö±ðΪl1,l2 ÇÒl1^2<(l1+l2)µÄÁ½¸öÓÐÐò ×ÓÐòÁй鲢ΪÓÐÐòÐòÁÐ {

start1=0;start2=l1; //·Ö±ð±íʾÐòÁÐ 1 ºÍÐòÁÐ2 µÄÊ£Óàδ¹é²¢²¿·ÖµÄÆðʼλÖà for(i=0;i

for(j=start2;j

RSh(a,start1,j-1,k);//½« a[start1]µ½a[j-1]Ö®¼äµÄ×ÓÐòÁÐÑ­»·ÓÒÒÆk λ start1+=k+1;

start2=j; //ÐÞ¸ÄÁ½ÐòÁÐÉÐδ¹é²¢²¿·ÖµÄÆðʼλÖà }

}//SL_Merge

void RSh(int a[ ],int start,int end,int k)//½«a[start]µ½a[end]Ö®¼äµÄ×ÓÐòÁÐÑ­»·ÓÒÒÆk λ,Ëã·¨Ô­Àí²Î¼û 5.18 {

len=end-start+1; for(i=1;i<=k;i++)

if(len%i==0&&k%i==0) p=i; //Çólen ºÍk µÄ×î´ó¹«Ô¼Êýp for(i=0;i

j=start+i;l=start+(i+k)%len;temp=a[j]; while(l!=start+i) {

a[j]=temp; temp=a[l]; a[l]=a[j];

j=l;l=start+(j-start+k)%len; //ÒÀ´ÎÏòÓÒÒÆ }

a[start+i]=temp; }//for }//RSh

9£®12 Éè¼ÆÒ»¸öÓÃÁ´±í±íʾµÄÖ±½ÓÑ¡ÔñÅÅÐòËã·¨¡£

void LinkedList_Select_Sort(LinkedList &L)//µ¥Á´±íÉϵļòµ¥Ñ¡ÔñÅÅÐòËã·¨

{

for(p=L;p->next->next;p=p->next) {

q=p->next;x=q->data;

for(r=q,s=q;r->next;r=r->next) //ÔÚq ºóÃæÑ°ÕÒÔªËØÖµ×îСµÄ½áµã if(r->next->data

x=r->next->data; s=r; }

if(s!=q) //ÕÒµ½ÁËÖµ±Èq->data ¸üСµÄ×îС½áµãs->next {

p->next=s->next;s->next=q;

t=q->next;q->next=p->next->next; p->next->next=t;

} //½»»»q ºÍ s->next Á½¸ö½áµã }//for

}//LinkedList_Select_Sort

9£®16 ÒÑÖª£¨k1,k2,?k n£©ÊǶѣ¬Ð´Ò»¸öËã·¨½«£¨k1,k2,?£¬k n£¬k n+1£©µ÷ÕûΪ¶Ñ¡£°´´Ë˼Ïëдһ¸ö´Ó¿Õ¶Ñ¿ªÊ¼Ò»¸öÒ»¸öÌíÈëÔªËØµÄ½¨¶ÑËã·¨¡£

void Build_Heap(Heap &H,int n)//´ÓµÍϱ굽¸ßϱêÖð¸ö²åÈ뽨¶ÑµÄËã·¨ {

for(i=2;i

{ //´Ëʱ´ÓH.r[1]µ½H.r[i-1] ÒѾ­ÊÇ´ó¶¥¶Ñ j=i;

while(j!=1) //°ÑH.r[i]²åÈë {

k=j/2;

if(H.r[j].key>H.r[k].key) H.r[j]<->H.r[k]; j=k; } }//for

}//Build_Heap/

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@) ËÕICP±¸20003344ºÅ-4