ËØÏòºóÒÆÒ»¸öλÖ㬵±ÕÒµ½²åÈëλÖúó¾Í½«arr[i-1]²åÈ룬¾ÍÍê³ÉÁËarr[0],arr[1],¡,arr[n-1]µÄÅÅÐò¡£
α´úÂëÈçÏÂ
template
type temp; int j;
for(int i=1;i<=currentsize-1;i++) {
temp=arr[i];j=i-1;
while(j>=0&&temp cout<<\µÚ\<<++num<<\ÌËÅÅÐò½á¹ûΪ:\; for(int t=0;t num=0; } <3>ÕÛ°ë²åÈëÅÅÐò ÕÛ°ë²åÈëÅÅÐòµÄ»ù±¾Ë¼Ï룺ÉèÔÚÅÅÐò±íÖÐÓÐn¸öÊý¾ÝÔªËØarr[0],arr[1],¡,arr[n-1]¡£ÆäÖУ¬arr[0],arr[1],¡,arr[n-1]ÊÇÒѾÅźÃÐòµÄ²¿·ÖÊý¾ÝÔªËØÐòÁУ¬ÔÚ²åÈëarr[i]ʱ£¬ÀûÓÃÕÛ°ë²éÕÒ·½·¨Ñ°ÕÒarr[i]µÄ²åÈëλÖá£ÕÛ°ë²åÈëÅÅÐò·½·¨Ö»ÄÜÔÚ˳Ðò±í´æ´¢½á¹¹ÊµÏÖ¡£ α´úÂëÈçÏ£º template type temp; int left,right; for(int i=1;i left=0;right=i-1;temp=arr[i]; while(left<=right)//ÕÒ²åÈëλÖà { int mid=(left+right)/2; if(temp for(int k=i-1;k>=left;k--)//ÏòºóÒÆ¶¯ arr[k+1]=arr[k]; arr[left]=temp; cout<<\µÚ\<<++num<<\ÌËÅÅÐò½á¹ûΪ:\; for(int t=0;t num=0; } <4>ðÅÝÅÅÐò ðÅÝÅÅÐòµÄ»ù±¾Ë¼ÏëÊÇ£ºÉèÅÅÐò±íÖÐÓÐn¸öÊý¾ÝÔªËØ¡£Ê×ÏȶÔÅÅÐò±íÖеÚÒ»£¬¶þ¸öÊý¾ÝÔªËØµÄ¹Ø¼ü×Öarr[0]ºÍarr[1]½øÐбȽϡ£Èç¹ûǰÕß´óÓÚºóÕߣ¬Ôò½øÐн»»»£»È»ºó¶ÔµÚ¶þ£¬Èý¸öÊý¾Ý×öͬÑùµÄ´¦Àí£»ÖØ¸´´Ë¹ý³ÌÖ±µ½´¦ÀíÍê×îºóÁ½¸öÏàÁÚµÄÊý¾ÝÔªËØ¡£ÎÒÃdzÆÖ®ÎªÒ»ÌËðÅÝ£¬Ëü½«¹Ø¼ü×Ö×î´óµÄÔªËØÒÆµ½ÅÅÐò±íµÄ×îºóÒ»¸öλÖã¬ÆäËûÊý¾ÝÔªËØÒ»°ãÒ²¶¼ÏòÅÅÐòµÄ×îÖÕλÖÃÒÆ¶¯¡£È»ºó½øÐеڶþÌËÅÅÐò£¬¶ÔÅÅÐò±íÖÐǰn-1¸öÔªËØ½øÐÐÓëÉÏÊöͬÑùµÄ²Ù×÷£¬Æä½á¹ûʹÕû¸öÅÅÐò±íÖйؼü×ִδóµÄÊý¾ÝÔªËØ±»ÒƵ½arr[n-2]µÄλÖá£Èç´Ë×î¶à×ön-1ÌËðÅݾÍÄܰÑËùÓÐÊý¾ÝÔªËØÅźÃÐò¡£ α´úÂëÈçÏ£º template int i=1; int finish=0;//0±íʾ»¹Ã»ÓÐÅźÃÐò while(i finish=1;//ÅÅÐò½áÊø±êÖ¾ÖÃΪ,¼Ù¶¨ÒѾÅźÃÐò for(int j=0;j swap(arr[j],arr[j+1]);//ÏàÁÚÔªËØ½»»»Î»Öà finish=0; }//ÅÅÐò½áÊø±êÖ¾ÖÃΪ,±íʾ±¾ÌË·¢ÉúÁ˽»»»£¬ËµÃ÷»¹Ã»ÓÐÅźÃÐò i++; cout<<\µÚ\<<++num<<\ÌËÅÅÐò½á¹ûΪ:\; for(int t=0;t num=0; } <5>¼òµ¥Ñ¡ÔñÅÅÐò£¨Ö±½ÓÑ¡ÔñÅÅÐò£© Ö±½ÓÑ¡ÔñÅÅÐòµÄËã·¨»ù±¾Ë¼ÏëÊÇ£º a)¿ªÊ¼Ê±ÉèiµÄ³õʼֵΪ0¡£ b)Èç¹ûi c)Èôarr[k]²»ÊÇÕâ×éÊý¾ÝÔªËØÖеĵÚÒ»¸öÊý¾ÝÔªËØ£¨i¡Ùk£©£¬Ôò½«arr[k]Óëarr[i]ÕâÁ½Êý¾ÝÔªËØµÄλÖöԵ÷£» d)Áîi=i+1ת²½Öè b)¡£ α´úÂëÈçÏ£º template void sortlist int k; for(int i=0;i<=currentsize-1;i++) { k=i; for(int j=i+1;j k=j;//k ָʾµ±Ç°ÐòÁÐÖÐ×îСÕßµÄλÖà if(k!=i)//×îС¹Ø¼ü×ÖµÄÊý¾ÝÔªËØÎ»Öò»µÈÓÚi swap(arr[i],arr[k]); cout<<\µÚ\<<++num<<\ÌËÅÅÐò½á¹ûΪ:\; for(int t=0;t num=0; } <6>¿ìËÙÅÅÐò ¿ìËÙÅÅÐò£¨Quick Sort£©ÓÖ±»³Æ×ö·ÖÇø½»»»ÅÅÐò£¬ÕâÊÇÒ»ÖÖÆ½¾ùÐÔÄܷdz£ºÃµÄÅÅÐò·½·¨¡£ ÆäËã·¨»ù±¾Ë¼ÏëÊÇ£ºÈÎÈ¡ÅÅÐò±íÖеÄij¸öÊý¾ÝÔªËØ(ÀýÈçÈ¡µÚÒ»¸öÊý¾ÝÔªËØ)×÷Ϊ»ù×¼£¬°´ÕÕ¸ÃÊý¾ÝÔªËØµÄ¹Ø¼ü×Ö´óС£¬½«Õû¸öÅÅÐò±í»®·ÖΪ×óÓÒÁ½¸ö×Ó±í£º ×ó²à×Ó±íÖÐËùÓÐÊý¾ÝÔªËØµÄ¹Ø¼ü×Ö¶¼Ð¡ÓÚ»ù×¼Êý¾ÝÔªËØµÄ¹Ø¼ü×Ö¡£ÓÒ²à×Ó±íÖÐËùÓÐÊý¾ÝÔªËØµÄ¹Ø¼ü×Ö¶¼´óÓÚ»òµÈÓÚ»ù×¼Êý¾ÝÔªËØµÄ¹Ø¼ü×Ö£¬»ù×¼Êý¾ÝÔªËØÔòÅÅÔÚÕâÁ½¸ö×Ó±íÖмä(ÕâÒ²ÊǸÃÊý¾ÝÔªËØ×îÖÕÓ¦°²·ÅµÄλÖÃ)£¬È»ºó·Ö±ð¶ÔÕâÁ½¸ö×Ó±íÖØ¸´Ê©ÐÐÉÏÊö·½·¨µÄ¿ìËÙÅÅÐò£¬Ö±µ½ËùÓеÄ×Ó±í³¤¶ÈΪ1£¬ÔòÅÅÐò½áÊø¡£ α´úÂëÈçÏ£º template void sortlist int i=low,j=high; type temp=arr[low];//È¡Çø¼äµÚÒ»¸öλÖÃΪ»ù׼λÖà if(i { while(i while(i if(i if(i } arr[i]=temp;//½«»ù×¼ÔªËØ¾Íλ cout<<\µÚ\<<++x<<\ÌËÅÅÐò½á¹ûΪ:\; for(int t=0;t quicksort(low,i-1);//ÔÚ×ó×ÓÇø¼äµÝ¹é½øÐпìËÙÅÅÐò quicksort(i+1,high);//ÔÚÓÒ×ÓÇø¼äµÝ¹é½øÐпìËÙÅÅÐò } } <7>¶ÑÅÅÐò£¨°üÀ¨½¨Á¢×î´ó¶ÑºÍ¶ÑÅÅÐòÁ½¸ö¹ý³Ì£© ¶ÑÅÅÐòËã·¨µÄ»ù±¾Ë¼ÏëÊÇ£º a.¶ÔÅÅÐò±íÖеÄÊý¾ÝÔªËØ£¬ÀûÓöѵĵ÷ÕûËã·¨Ðγɳõʼ¶Ñ¡£ b.Êä³ö¶Ñ¶¥ÔªËØ¡£ c.¶ÔÊ£ÓàÔªËØÖØÐµ÷ÕûÐγɶѡ£ d.ÖØ¸´Ö´ÐеÚb¡¢c²½£¬Ö±µ½ËùÓÐÊý¾ÝÔªËØ±»Êä³ö¡£ (1)½¨Á¢×î´ó¶ÑµÄα´úÂëÈçÏ£º template void sortlist {//Ïòϵ÷Õûʹ´Óstart¿ªÊ¼µ½currentsize-1ΪֹµÄ×Ó±í³ÉΪ×î´ó¶Ñ int i=start,j=2*i+1;//jΪiµÄ×óº¢×Ó int tablesize=currentsize; type temp=arr[i]; while(j<=currentsize-1) { if(j else{arr[i]=arr[j];i=j;j=2*j+1; } } arr[i]=temp; }