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

插入排序解决办法

2012-02-27 
插入排序把一个整数按大小顺序插入已排好序的数组中。C/C++ codevoid main(){int i,j,arr[6],temp,input,p,

插入排序
把一个整数按大小顺序插入已排好序的数组中。

C/C++ code
void main(){        int i,j,arr[6],temp,input,p,q,s,k;    for (i=0;i<5;i++)    {        scanf("%d",&arr[i]);    }    for (i=0;i<5;i++)    {        for (j=i;j<5;j++)        {            if (arr[i]>arr[j])            {                temp=arr[i];                arr[i]=arr[j];                arr[j]=temp;            }        }    }    for (i=0;i<5;i++)    {        printf("%d ",arr[i]);    }    printf("请输入要插入的数:\n");    scanf("%d",&input);    for (i=0;i<5;i++)    {        if (input>arr[i])        {            for (s=4;s>=i;s--)            {                arr[s+1]=arr[s];            }                    }                    }    arr[i]=input;   //这里好像出问题了,不知为什么,怎么排都无法得到想要的结果???    for(k=0;k<=5;k++)        printf("%d ",arr[k]);    }


[解决办法]
你这个程序只能插入一个数字,最好改成能动态增长的,我就不改了
C/C++ code
#include<stdio.h>#define N 10int main(){        int i,j,arr[6],temp,input,p,q,s,k;//here    for (i=0;i<5;i++)    {        scanf("%d",&arr[i]);    }    for (i=0;i<5;i++)    {        for (j=i;j<5;j++)        {            if (arr[i]>arr[j])            {                temp=arr[i];                arr[i]=arr[j];                arr[j]=temp;            }        }    }    for (i=0;i<5;i++)    {        printf("%d ",arr[i]);    }    printf("请输入要插入的数:\n");    scanf("%d",&input);    for (i=0;i<5;i++)    {        if (input<arr[i])//here        {            for (s=4;s>=i;s--)            {                arr[s+1]=arr[s];            }            break;//here        }                            }    arr[i]=input;   //这里好像出问题了,不知为什么,怎么排都无法得到想要的结果???    for(k=0;k<=5;k++)        printf("%d ",arr[k]);    }
[解决办法]
C/C++ code
 
for (i=0;i <5;i++)
  {
    if (input>arr[i])
    {
      for (s=4;s>=i;s--)
      {
        arr[s+1]=arr[s];
      }
     
    }   
   
  }

这一段的内循环应该提到外面吧
[解决办法]
for (i=0;i<5;i++)
{
if (input<arr[i])
{
for (s=4;s>=i;s--)
{
arr[s+1]=arr[s];
}
break;
}
}

------这样就可以了。
[解决办法]
C/C++ code
void main(){        int i,j,arr[6],temp,input,p,q,s,k;    for (i=0;i<5;i++)    {        scanf("%d",&arr[i]);    }    for (i=0;i<5;i++)    {        for (j=i;j<5;j++)        {            if (arr[i]>arr[j])            {                temp=arr[i];                arr[i]=arr[j];                arr[j]=temp;            }        }    }    for (i=0;i<5;i++)    {        printf("%d ",arr[i]);    }    printf("请输入要插入的数:\n");    scanf("%d",&input);    for (i=0;i<5;i++)    {        if (input < arr[i])        {              for(j=5;j>i;j--)              {                  arr[j] = arr[j-1];              }              arr[i]=input;              break;                  }                    }            for(k=0;k<=5;k++)        printf("%d ",arr[k]);    } 


[解决办法]

C/C++ code
void main(){        int i,j,arr[6],temp,input,p,q,s,k;    for (i=0;i<5;i++)    {        scanf("%d",&arr[i]);    }    for (i=0;i<5;i++)    {        for (j=([color=#FF0000]i+1)[/color] ;j<5;j++)        {            if (arr[i]>arr[j])            {                temp=arr[i];                arr[i]=arr[j];                arr[j]=temp;            }        }    }    for (i=0;i<5;i++)    {        printf("%d ",arr[i]);    }    printf("请输入要插入的数:\n");    scanf("%d",&input);    for (i=0;i<5;i++)    {        if (input < arr[i])        {              for(j=5;j>i;j--)              {                  arr[j] = arr[j-1];              }              arr[i]=input;              break;                  }                    }            for(k=0;k<=5;k++)        printf("%d ",arr[k]);    }
[解决办法]
抱歉上一篇发错了!
C/C++ code
void main(){        int i,j,arr[6],temp,input,p,q,s,k;    for (i=0;i<5;i++)    {        scanf("%d",&arr[i]);    }    for (i=0;i<5;i++)    {        for (j=(i+1);j<5;j++)        {            if (arr[i]>arr[j])            {                temp=arr[i];                arr[i]=arr[j];                arr[j]=temp;            }        }    }    for (i=0;i<5;i++)    {        printf("%d ",arr[i]);    }    printf("请输入要插入的数:\n");    scanf("%d",&input);    for (i=0;i<5;i++)    {        if (input < arr[i])        {              for(j=5;j>i;j--)              {                  arr[j] = arr[j-1];              }              arr[i]=input;              break;                  }                    }            for(k=0;k<=5;k++)        printf("%d ",arr[k]);    } 

热点排行