| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 716 人关注过本帖, 1 人收藏
标题:插入排序问题,请前辈帮忙看一下。
只看楼主 加入收藏
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:2 
插入排序问题,请前辈帮忙看一下。

程序说明:下列程序完成的是插入排序功能:数组a 中存放一个递增
数列,输入一个整数x,将它插入到数组中,使之仍为一个有序数列。


下面是我写的一个代码,但是当我输入数值“26”的时候,输出结果竟然是:90  1  10 20 90 30 40 50 60 70 80 90
不知道哪里出了问题,红色字的并不是我想要的26,而是90。麻烦前辈帮忙看一下问题出在哪。谢谢

#include "stdio.h"
#define N 10
void main()
{
    int a[]={1,10,20,30,40,50,60,70,80,90} ,x,i,p;/*定义数组及其它变量*/
    scanf("%d",&x);                               /*输入X的数值*/
        for(i=0,p=N;i<N;i++)    /*利用循环判断X在数组中的位置*/
            if(x<a[i])
              {
               p=i;

               i=N;
               }
        for(i=N-1;i>=p; i--)   /*利用循环重新分配在X插入后数值对应的位置*/
            a[i+1]=a[i];
        a[p]=x;                /*确定X在数组中的位置*/
        printf("%d",x);        /*输出X的数值*/
        for(i=0;i<=N;i++)      /*利用循环输出更新后的数组*/
            printf("%5d",a[i]);
        printf("\n");
        getch();               /*wintc需要这一个*/
}
搜索更多相关主题的帖子: 前辈 
2010-11-26 17:52
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:20 
程序代码:
#include "stdio.h"
#include <conio.h>
#define N 10
void main()
{
    int a[11]={1,10,20,30,40,50,60,70,80,90} ,x,i,p;/*定义数组及其它变量*/
    scanf("%d",&x);                               /*输入X的数值*/
        for(i=0,p=N;i<N;i++)    /*利用循环判断X在数组中的位置*/
            if(x<a[i])
              {
               p=i;

               i=N;
               }
        for(i=N-1;i>=p; i--)   /*利用循环重新分配在X插入后数值对应的位置*/
            a[i+1]=a[i];
        a[p]=x;                /*确定X在数组中的位置*/
        printf("%d",x);        /*输出X的数值*/
        for(i=0;i<=N;i++)      /*利用循环输出更新后的数组*/
            printf("%5d",a[i]);
        printf("\n");
        getch();               /*wintc需要这一个*/
}
数组的长度定义不够

If You Want Something, Go Get It, Period.
2010-11-26 18:13
折翼
Rank: 2
来 自:广东广州
等 级:论坛游民
帖 子:105
专家分:77
注 册:2010-10-22
收藏
得分:0 
以下是引用m21wo在2010-11-26 18:13:18的发言:

 
#include "stdio.h"
#include  
#define N 10
void main()
{
    int a[11]={1,10,20,30,40,50,60,70,80,90} ,x,i,p;/*定义数组及其它变量*/
    scanf("%d",&x);                               /*输入X的数值*/
        for(i=0,p=N;i
哦哦,原来如此。谢谢。如果我定义的长度不够,非常它不会提示错误?
2010-11-26 23:45
快速回复:插入排序问题,请前辈帮忙看一下。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058525 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved