æ•°æ�®ç»“构课程设计报告---几ç§�排åº�算法的演ç¤?附æº�代ç �) - 百度文库 ÏÂÔØ±¾ÎÄ

ËØÏòºóÒÆÒ»¸öλÖ㬵±ÕÒµ½²åÈëλÖúó¾Í½«arr[i-1]²åÈ룬¾ÍÍê³ÉÁËarr[0],arr[1],¡­,arr[n-1]µÄÅÅÐò¡£

α´úÂëÈçÏÂ

template //Ö±½Ó²åÈëÅÅÐò void sortlist::insertionsort() {

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 //ÕÛ°ë²åÈëÅÅÐò void sortlist::binaryinsertsort() {

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 //ðÅÝÅÅÐò void sortlist:: bubblesort() {

int i=1;

int finish=0;//0±íʾ»¹Ã»ÓÐÅźÃÐò while(i

finish=1;//ÅÅÐò½áÊø±êÖ¾ÖÃΪ,¼Ù¶¨ÒѾ­ÅźÃÐò for(int j=0;jarr[j+1])//ÄæÐò {

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::selectsort()//¼òµ¥Ñ¡ÔñÅÅÐò {

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::quicksort(int low,int high)//ÔÚ´ýÅÅÐòÇø¼ä[low,high]ÉÏ£¬µÝ¹éµØ½øÐпìËÙÅÅÐò {

int i=low,j=high;

type temp=arr[low];//È¡Çø¼äµÚÒ»¸öλÖÃΪ»ù׼λÖà if(i

{

while(i

while(i

if(i=arr[i])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::filterdown(const int start)

{//Ïòϵ÷Õûʹ´Ó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=arr[j])break;

else{arr[i]=arr[j];i=j;j=2*j+1; } }

arr[i]=temp; }