读书人

insert_sort解决方案

发布时间: 2012-02-16 21:30:36 作者: rapoo

insert_sort
为什么下面的程序不可以循环?????


#include "stdafx.h"

void insert_sort(int *arr,int len)
{ int i,j,tmp;
for(i=1;i<len;i++)
{
j=i-1;
tmp=arr[i];
printf("#%d\n",tmp);
while(j>=0&&arr[j]>tmp)
{printf("##%3d\n",tmp);
arr[j+1]=arr[j];
printf("##%3d\n",tmp);
for(i=0;i<len;i++)
printf("%2d",arr[i]);
printf("@@%3d\n ",tmp);
j--;

}
printf("@#%3d\n ",tmp);
arr[j+1]=tmp;
printf("%%%3d\n ",tmp);

for(i=0;i<len;i++)
printf("%3d",arr[i]);
printf("\n");
}
for(i=0;i<len;i++)
printf("%3d",arr[i]);
printf("\n");
}


int _tmain(int argc, _TCHAR* argv[])
{
int a[8]={3,2,4,5,6,1,7,9};
insert_sort(a,8);
return 0;
}


[解决办法]
你在for(i...循环中又用了for(...
所以排版很重要,改好的:

C/C++ code
#include <stdio.h>#include <stdlib>void insert_sort(int *arr,int len){ int i,j,k,tmp;  for(i=1;i<len;i++)  {     j=i-1;     tmp=arr[i];     printf("#%d\n",tmp);     while(j>=0 && arr[j]>tmp)     {       printf("##%3d\n",tmp);       arr[j+1]=arr[j];       printf("##%3d\n",tmp);       for(k=0;k<len;k++)          printf("%2d",arr[i]);       printf("@@%3d\n ",tmp);       j--;     }     printf("@#%3d\n ",tmp);     arr[j+1]=tmp;     printf("%%%3d\n ",tmp);     for(k=0;k<len;k++)        printf("%3d",arr[i]);     printf("\n");  }  for(i=0;i<len;i++)  printf("%3d",arr[i]);  printf("\n");}int  main(int argc, char* argv[]){   int a[8]={3,2,4,5,6,1,7,9};     insert_sort(a,8); system("pause");return 0;} 

读书人网 >C++

热点推荐