首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

insert_sort解决方案

2012-02-16 
insert_sort为什么下面的程序不可以循环?????#include stdafx.hvoid insert_sort(int *arr,int len){ in

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;} 

热点排行