Ëã·¨µÄʱ¼ä¸´ÔÓ¶È O(n)£» ÌÖÂÛËã·¨ÖмǼµÄ×î´óÒÆ¶¯´ÎÊý¡£
void Divide(int a[ ],int n)//°ÑÊý×éa ÖÐËùÓÐֵΪ¸ºµÄ¼Ç¼µ÷µ½·Ç¸ºµÄ¼Ç¼֮ǰ {
low=0;high=n-1; while(low while(low while(low }//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/