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

有关数组数组排序的有关问题

2012-02-04 
有关数组数组排序的问题大家好,我在写这道题时出错了,要求是输入一个数,按排序规律将它插入数组中,从小到

有关数组数组排序的问题
大家好,我在写这道题时出错了,要求是输入一个数,按排序规律将它插入数组中,从小到大,请知道的人帮忙解答

C/C++ code
//输入一个数后按排序规律将它插入数组中#include <Stdio.h>void main(){    int a[11]={1,10,20,30,40,50,60,70,80,90};    int i,j,num;    printf("原来的数:");    for(i=0; i<10; i++)    {        printf("%d ",a[i]);    }    printf("\n");    printf("请插入一个数:");    scanf("%d",&num);    if(num>a[9])    {        a[10]=num;    }    else    {        for(i=0; i<10; i++)        {            if(a[i]>num)            {                for(j=9; j>=i; j--)                {                    a[j+1]=a[j];                    a[i]=num;                    break;                }            }        }    }    printf("插入后:");    for(i=0; i<11; i++)    {        printf("%d ",a[i]);    }    printf("\n");}


[解决办法]
for(i=0; i<10; i++)
{
if(a[i]>num)
{
for(j=9; j>=i; j--)
{
a[j+1]=a[j];

//break;
}
a[i]=num;

break;
}
}
[解决办法]
C/C++ code
#include <Stdio.h>void main(){    int a[11]={1,10,20,30,40,50,60,70,80,90};    int i,j,num;    printf("原来的数:");    for(i=0; i<10; i++)    {        printf("%d ",a[i]);    }    printf("\n");    printf("请插入一个数:");    scanf("%d",&num);    if(num>=a[9])    {        a[10]=num;    }    else    {        for(i=0; i<10; i++)        {            if(a[i]>num)            {                for(j=9; j>=i; j--)                {                    a[j+1]=a[j];                }                a[i]=num;                break;  //这加break;            }        }    }    printf("插入后:");    for(i=0; i<11; i++)    {        printf("%d ",a[i]);    }    printf("\n");}
[解决办法]
[code=C/C++][/code]


//输入一个数后按排序规律将它插入数组中
#include <Stdio.h>
int main()
{
int a[11]={1,10,20,30,40,50,60,70,80,90};
int i,j,num;
printf("原来的数:");
for(i=0; i<10; i++)
{
printf("%d ",a[i]);
}
printf("\n");

printf("请插入一个数:");
scanf("%d",&num);
if(num>a[9])
{
a[10]=num;
}
else
{
for(i=0; i<10; i++)
{
if(a[i]>num)
{
for(j=9; j>=i; j--)
{
a[j+1]=a[j];

//break;
}
a[i]=num; //这个赋值放到for循环外面 
break; //break跳出for循环 
}
}
}
printf("插入后:");
for(i=0; i<11; i++)
{
printf("%d ",a[i]);
}
printf("\n");
system("PAUSE");
return 0;
}

[解决办法]
for(j=9; j>=i; j--)
{
a[j+1]=a[j]; //将所有比输入的数据大的后移
}
a[i]=num; //写入,完事,退出
break; //这加break;

[解决办法]
C/C++ code
#include <Stdio.h>void main(){    int a[11]={1,10,20,30,40,50,60,70,80,90};    int i,j,num;    printf("Ô­À´µÄÊý:");    for(i=0; i<10; i++)    {        printf("%d ",a[i]);    }    printf("\n");    printf("Çë²åÈëÒ»¸öÊý:");    scanf("%d",&num);    if(num>a[9])    {        a[10]=num;    }    else    {        for(i=0; i<10; i++)        {            if(a[i]>num)            {                for(j=9; j>=i; j--)                        a[j+1]=a[j];                a[i]=num;                break;            }                    }    }    printf("²åÈëºó:");    for(i=0; i<11; i++)    {        printf("%d ",a[i]);    }    printf("\n");} 


[解决办法]
2楼正解!

C/C++ code
#include <Stdio.h>void main(){    int a[11]={1,10,20,30,40,50,60,70,80,90};    int i,j,num;    printf("原来的数:");    for(i=0; i<10; i++)    {        printf("%d ",a[i]);    }    printf("\n");    printf("请插入一个数:");    scanf("%d",&num);    if(num>=a[9])    {        a[10]=num;    }    else    {        for(i=0; i<10; i++)        {            if(a[i]>num)            {                for(j=9; j>=i; j--)                {                    a[j+1]=a[j];                }                a[i]=num;                break;  //这加break;            }        }    }    printf("插入后:");    for(i=0; i<11; i++)    {        printf("%d ",a[i]);    }    printf("\n");}
[解决办法]
楼主的意思是不是应该是这样的:把插入的数按照排序规则插到已有的数组里面?
我觉得我这个办法还是比较好的:就是定义数组的时候为要插入得数留下的一个元素的位置。然后把插入得数赋值给这个a[11],最后对整个的数组元素按照排序规则排序,输出。代码如下,已调试,可运行:
#include <Stdio.h>
void main()
{
int a[11]={1,10,20,30,40,50,60,70,80,90};
int i,j,temp;
printf("The original numbers are:");
for(i=0; i<10; i++)
{
printf("%d ",a[i]);
}
printf("\n");

printf("Input one number please:");
scanf("%d",&a[10]);
for(i=0;i<10;i++)
{
for(j=i+1;j<11;j++)
{
if(a[i]>a[j])
{temp=a[i];a[i]=a[j];a[j]=temp;}
 }
}
for(i=1;i<11;i++)
{printf("%d ",a[i]);}
printf("\n");

}

[解决办法]
C/C++ code
//插入排序算法insertsort(int a[],int n){    int i,j;    int temp;    for(i=1; i<n; i++)    {     j=i;     temp=a[i];    while(j>0 && temp < a[j-1])    {     a[j]=a[j-1];     j--;    }   A[j]=temp;    } 

热点排行