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(...
所以排版很重要,改好的:
#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;}