Êý¾Ý½á¹¹¿Î³ÌÉè¼Æ±¨¸æ---¼¸ÖÖÅÅÐòËã·¨µÄÑÝʾ(¸½Ô´´úÂë)

2026/4/29 4:37:46

(2)¶ÑÅÅÐò

Èç¹û½¨Á¢µÄ¶ÑÂú×ã×î´ó¶ÑµÄÌõ¼þ£¬Ôò¶ÑµÄµÚÒ»¸öÊý¾ÝÔªËØarr[0]¾ßÓÐ×î´óµÄ¹Ø¼ü×Ö£¬½«arr[0]Óëarr[n-1]¶Ôµ÷£¬°Ñ¾ßÓÐ×î´ó¹Ø¼ü×ÖµÄÊý¾ÝÔªËØ½»»»µ½×îºó£¬ÔÙ¶ÔÇ°ÃæµÄn-1¸öÊý¾ÝÔªËØÊ¹Óöѵĵ÷ÕûËã·¨£¬ÖØÐ½¨Á¢×î´ó¶Ñ£¬½á¹û°Ñ¾ßÓдÎ×î´ó¹Ø¼ü×ÖµÄÊý¾ÝÔªËØÓÖÉϸ¡µ½¶Ñ¶¥£¬¼´arr[0]µÄλÖã¬ÔÙ¶Ôµ÷arr[0]ºÍarr[n-2]£¬¡­£¬Èç´Ë·´¸´Ö´ÐÐn-1´Î£¬×îºóµÃµ½È«²¿ÅÅÐòºÃµÄÊý¾ÝÔªËØÐòÁС£

α´úÂëÈçÏ£º

template //¶ÑÅÅÐò void sortlist::heapsort() {

int tablesize=currentsize;

for(int i=(currentsize-2)/2;i>=0;i--) filterdown(i); //³õʼ½¨¶Ñ for(int i=currentsize-1;i>=1;i--) {

swap(arr[0],arr[i]);//¶Ñ¶¥ÔªËغÍ×îºóÒ»¸öÔªËØ½»»» currentsize--;

filterdown(0);//ÖØ½¨×î´ó¶Ñ

cout<<\µÚ\<<++num<<\ÌËÅÅÐò½á¹ûΪ:\; for(int t=0;t

num=0;

currentsize=tablesize; }

<8>¹é²¢ÅÅÐò£¨°üÀ¨¹é²¢Ëã·¨£¬Ò»Ì˹鲢Ëã·¨ºÍ¹é²¢ÅÅÐò£© ¹é²¢Ëã·¨

Æä»ù±¾Ë¼ÏëÊÇ£ºÉèÓÐÁ½¸öÓÐÐò±íAºÍB£¬ÆäÊý¾ÝÔªËØ¸öÊý£¨±í³¤£©·Ö±ðΪnºÍm£¬±äÁ¿iºÍj·Ö±ðÊDZíAºÍ±íBµÄµ±Ç°¼ì²âÖ¸Õ룻Éè±íCÊǹ鲢ºóµÄÐÂÓÐÐò±í£¬±äÁ¿kÊÇËüµÄµ±Ç°´æ·ÅÖ¸Õë¡£¿ªÊ¼Ê±i¡¢j¡¢k¶¼·Ö±ðÖ¸ÏòA¡¢B¡¢CÈý¸ö±íµÄÆðʼλÖã»È»ºó¸ù¾ÝA[i]ÓëB[j]µÄ¹Ø¼ü×ֵĴóС£¬°Ñ¹Ø¼ü×ÖСµÄÊý¾ÝÔªËØ·Åµ½Ð±íC[k]ÖУ»ÇÒÏàÓ¦µÄ¼ì²âÖ¸Õ루i»òj£©ºÍ´æ·ÅÖ¸ÕëkÔö¼Ó1.Èç´ËÑ­»·£¬µ±iÓëjÖÐÓÐÒ»¸öÒѾ­³¬³ö±í³¤Ê±£¬½«ÁíÒ»¸ö±íÖеÄÊ£Óಿ·ÖÕÕ³­µ½Ð±íC[k]~C[m+n]ÖС£

ÏÂÃæµÄ¹é²¢Ëã·¨ÖУ¬Á½¸ö´ý¹é²¢µÄÓÐÐò±íÊ×βÏà½Ó´æ·ÅÔÚÊý×ésourcetable.arr[]ÖУ¬ÆäÖеÚÒ»¸ö±íµÄϱ귶Χ´Óleftµ½mid£¬ÁíÒ»¸ö±íµÄϱ귶Χ´Ómid+1µ½right¡£Ç°Ò»¸ö±íÖÐÓÐmid-left+1¸öÊý¾ÝÔªËØ£¬ºóÒ»¸ö±íÖÐÓÐright ¨Cmid¸öÊý¾ÝÔªËØ¡£¹é²¢ºóµÃµ½µÄÐÂÓÐÐò±íÓÐright ¨Cmid¸öÊý¾ÝÔªËØ¡£¹é²¢ºóµÃµ½µÄÐÂÓÐÐò±í´æ·ÅÔÚÁíÒ»¸ö¸¨ÖúÊý×émergedtable.arr[]ÖУ¬Æäϱ귶Χ´Óleftµ½right¡£

α´úÂëÈçÏ£º

template void

sortlist::merge(sortlist&sourcetable,sortlist&mergedtable,const int left,const int mid,const int right) {

int i=left,j=mid+1,k=left;//Ö¸Õë³õʼ»¯

//iÊÇǰһ¶ÎµÄµ±Ç°ÔªËØÎ»Öã¬jÊǺóÒ»¶ÎµÄµ±Ç°ÔªËØÎ»Öã¬kÊǸ¨ÖúÊý×éµÄµ±Ç°Î»Öà while(i<=mid&&j<=right)

if(sourcetable.arr[i]<=sourcetable.arr[j])

{mergedtable.arr[k]=sourcetable.arr[i];i++;k++;} else{mergedtable.arr[k]=sourcetable.arr[j];j++;k++;} if(i<=mid)

for(int p=k,q=i;q<=mid;p++,q++)

mergedtable.arr[p]=sourcetable.arr[q];//°Ñǰһ¶Î¸´ÖƵ½mergedtable else

for(int p=k,q=j;q<=right;p++,q++)

mergedtable.arr[p]=sourcetable.arr[q];//°ÑºóÒ»¶Î¸´ÖƵ½mergedtable }

Ò»Ì˹鲢Ëã·¨

ÉèÊý×ésourcetable.arr[0]µ½sourcetable.arr[n-1]ÖеÄn¸öÊý¾ÝÔªËØÒѾ­·ÖΪһЩ³¤¶ÈΪlenµÄ¹é²¢Ï½«ÕâЩ¹é²¢ÏîÁ½Á½¹é²¢£¬¹é²¢³ÉһЩ³¤¶ÈΪ2lenµÄ¹é²¢Ï½á¹û·Åµ½mergedtable.arr[]ÖС£Èç¹ûn²»ÊÇ2lenµÄÕûÊý±¶£¬ÔòÒ»Ì˹鲢µ½×îºó£¬¿ÉÄÜÓöµ½Á½ÖÖÇé¿ö£º Ê£ÏÂÒ»¸ö³¤¶ÈΪlenµÄ¹é²¢ÏîºÍÒ»¸ö³¤¶È²»×ãlenµÄ¹é²¢Ï¿ÉÓÃÒ»´ÎmergeËã·¨£¬½«ËüÃǹ鲢³ÉÒ»¸ö³¤¶ÈСÓÚ2lenµÄ¹é²¢Ïî¡£ ֻʣÏÂÒ»¸ö¹é²¢ÏÆä³¤¶ÈСÓÚ»òµÈÓÚlen£¬¿É½«ËüÖ±½Ó¸´ÖƵ½Êý×émergedtable.arr[]ÖС£ α´úÂëÈçÏ£º

template template void

sortlist::mergepass(sortlist&sourcetable,sortlist&mergedtable,const int len) {

int i=0;

while(i+2*len<=currentsize-1)//±íʾÖÁÉÙÓиö×ÓÐòÁÐ {

merge(sourcetable,mergedtable,i,i+len-1,i+2*len-1); i+=2*len; }

if(i+len<=currentsize-1)//ÈôÖ»ÓÐ×îºóÁ½¸ö×ÓÐòÁÐ

merge(sourcetable,mergedtable,i,i+len-1,currentsize-1); else//ÈôÖ»ÓÐ×îºóÒ»¸ö×ÓÐòÁÐ

}

¹é²¢ÅÅÐò

ÔÚÒ»Ì˹鲢Ëã·¨µÄ»ù´¡ÉÏ£¬ÊµÏÖÁ½Â·¹é²¢ÅÅÐòËã·¨¡£ÔÚÁ½Â·¹é²¢ÅÅÐòËã·¨ÖУ¬³õʼÅÅÐò±í´æ·ÅÔÚÊý×étable.arr[]ÖÐ,µÚÒ»Ì˹鲢½«table.arr[]ÖеĹ鲢ÏîÁ½Á½¹é²¢£¬½á¹û´æ·ÅÔÚ¸¨ÖúÊý×étemptable.arr[]ÖС£µÚ¶þÌ˽«temptable.arr[]ÖеĹ鲢ÏîÁ½Á½¹é²¢£¬½á¹û·Å»ØÔ­Êý×étable.arr[]ÖУ¬Èç´Ë·´¸´½øÐС£ÎªÁ˽«×îºó¹é²¢½á¹ûÈÔ·ÅÔÚÊý×étable.arr[]ÖУ¬¹é²¢ÌËÊýӦΪżÊý¡£Èç¹û×öÆæÊýÌ˾ÍÄÜÍê³Éʱ£¬×îºó»¹ÐèÒªÖ´ÐÐÒ»´ÎÒ»Ì˹鲢¹ý³Ì£¬ÓÉÓÚÕâʱµÄ¹é²¢Ï¶Èlen>=n£¬Òò´ËÔÚÔòÌ˹鲢ÖÐwhileÑ­»·²»Ö´ÐУ¬Ö»×ö°Ñtemptable.arr[]ÖеÄÊý¾ÝÔªËØ¸´ÖƵ½table.arr[]µÄ¹¤×÷¡£

α´úÂëÈçÏ£º

template

void sortlist::mergesort(sortlist &table )

{//°´Êý¾ÝÔªËØ¹Ø¼ü×ַǵݼõµÄ˳Ðò¶ÔÅÅÐò±ítableÖÐÊý¾ÝÔªËØ½øÐеݹéÅÅÐò sortlist temptable; int len=1;

while(len

mergepass(table,temptable,len);len*=2; mergepass(temptable,table,len);len*=2; }

num=0; }

<9>Ö÷º¯Êý

Ö÷Òª¹¦ÄÜÊÇÏÔʾÖ÷²Ëµ¥£¬ÒÔ¼°¶Ô¸÷ÖÖÅÅÐòµÄµ÷ÓÃ

α´úÂëÈçÏ£º

int main()//Ö÷º¯Êý {

for(int j=i;j<=currentsize-1;j++)

mergedtable.arr[j]=sourcetable.arr[j]; if(len<=currentsize-1) {

if(num

cout<<\µÚ\<<++num<<\ÌËÅÅÐò½á¹ûΪ:\; for(int t=0;t

cout<

cout<<\

***********************************************************************\<

cout<<\<

cout<<\¿É¹©Ñ¡ÔñµÄÅÅÐò·½·¨===========================\<

=======================================================================\<>ch;

if(ch=='0') {cout<<\ÄúÒѳɹ¦Í˳ö¸Ãϵͳ!\<

int n,number;

if(ch>='0'&&ch<='7') {

cout<<\ÊäÈëÄúÒª½øÐÐÅÅÐòµÄÊýµÄ¸öÊý£º\; cin>>n;

cout<<\ÇëÊäÈë\<table(n); for(int i=0;i

{cin>>number;table.insert(i,number);} switch(ch) {

case '1':

cout<<\ÄúÑ¡ÔñµÄÊÇÖ±½Ó²åÈëÅÅÐò*******\\n\<

system(\); break; case '2':

cout<<\ÄúÑ¡ÔñµÄÊÇÕÛ°ë²åÈëÅÅÐò*******\\n\<


Êý¾Ý½á¹¹¿Î³ÌÉè¼Æ±¨¸æ---¼¸ÖÖÅÅÐòËã·¨µÄÑÝʾ(¸½Ô´´úÂë).doc ½«±¾ÎĵÄWordÎĵµÏÂÔØµ½µçÄÔ
ËÑË÷¸ü¶à¹ØÓÚ£º Êý¾Ý½á¹¹¿Î³ÌÉè¼Æ±¨¸æ---¼¸ÖÖÅÅÐòËã·¨µÄÑÝʾ(¸½Ô´´úÂë) µÄÎĵµ
Ïà¹ØÍÆ¼ö
Ïà¹ØÔĶÁ
¡Á ÓοͿì½ÝÏÂÔØÍ¨µÀ£¨ÏÂÔØºó¿ÉÒÔ×ÔÓɸ´ÖƺÍÅŰ棩

ÏÂÔØ±¾ÎĵµÐèÒªÖ§¸¶ 10 Ôª

Ö§¸¶·½Ê½£º

¿ªÍ¨VIP°üÔ»áÔ± ÌØ¼Û£º29Ôª/ÔÂ

×¢£ºÏÂÔØÎĵµÓпÉÄÜ¡°Ö»ÓÐĿ¼»òÕßÄÚÈݲ»È«¡±µÈÇé¿ö£¬ÇëÏÂÔØÖ®Ç°×¢Òâ±æ±ð£¬Èç¹ûÄúÒѸ¶·ÑÇÒÎÞ·¨ÏÂÔØ»òÄÚÈÝÓÐÎÊÌ⣬ÇëÁªÏµÎÒÃÇЭÖúÄã´¦Àí¡£
΢ÐÅ£ºxuecool-com QQ£º370150219