| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 663 人关注过本帖
标题:一个使用插入排序的程序错误
只看楼主 加入收藏
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
 问题点数:0 回复次数:7 
一个使用插入排序的程序错误
main()
{int a[10],i,j,temp;
printf("please input array number:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%2d,",a[i]);
printf("\n");
for(j=1;j<10;j++)
{i=j-1;
while(i>=0 &&a[j]<a[i])
{a[i+1]=a[i];
i--;
}
a[i]=a[j];
}
for(i=0;i<10;i++)
printf("%2d,",a[i]);
getch();
}
不知道怎么运行结果不对呢?
搜索更多相关主题的帖子: 程序错误 
2006-03-03 13:13
梦想中国
Rank: 2
等 级:新手上路
威 望:5
帖 子:539
专家分:0
注 册:2006-2-26
收藏
得分:0 
看下面的程序:其中a[0]用做哨岗

#include<stdio.h>
#include<conio.h>
int main(void)
{
int a[6]={0,5,4,9,2,1},i,j,k;
for(i=2;i<=5;i++) file://a[0] is temporary
{
if(a[i]<a[i-1]) file://current value less previous value
{
a[0]=a[i];
for(j=i-1;a[0]<a[j];j--)
a[j+1]=a[j]; file://record remove
a[j+1]=a[0];
}
}
for(k=1;k<=5;k++)
printf("%3d",a[k]); printf("\n");
getch();
return 0;
}
understand?

2006-03-03 15:49
血刃
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-2-15
收藏
得分:0 
int charu(int n,int x,int*P)
{int i,j;
n=*p;
if((i<1)||i>(n+1))
return (0);
else
for(j=n;j>=i;j--)
a[j]=a[j-1];
a[j]=x;
*p=++n;
return (1);
}
2006-03-03 16:52
feng1256
Rank: 4
等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
收藏
得分:0 
以下是引用血刃在2006-3-3 16:52:00的发言:
int charu(int n,int x,int*P)
{int i,j;
n=*p;
if((i<1)||i>(n+1))
return (0);
else
for(j=n;j>=i;j--)
a[j]=a[j-1];
a[j]=x;
*p=++n;
return (1);
}

确实用拼音起个名字挺怪的(在程序里),建议还是多使用英文,手边放个字典也行。你看这函数名读出来。。

[此贴子已经被作者于2006-3-3 16:53:47编辑过]


叁蓙大山:工謪、稅務、嗣發 抱歉:不回答女人的问题
2006-03-03 16:53
ftlovemq
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-2-24
收藏
得分:0 

a[i]和a[j]交换值时,应当借助一个temp变量,这样才不会把原来的值丢失!例如:
temp=a[i];
a[i]=a[j];
a[j]=temp;
这样a[i]原来的值才能放到a[j]里!


2006-03-04 22:46
zhangjuan
Rank: 1
等 级:新手上路
帖 子:992
专家分:0
注 册:2006-1-19
收藏
得分:0 
谢谢楼上的各位.

2006-03-05 08:58
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
收藏
得分:0 

你的程序改成如下就行啦,红色部分是添加的或者修改的

#include <iostream>
#include <conio.h>

void main()
{
int a[10],i,j,temp;
printf("please input array number:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
printf("%2d,",a[i]);
printf("\n");
for(j=1;j<10;j++)
{
temp=a[j];
i=j-1;
while(i>=0 &&temp<a[i])
{
a[i+1]=a[i];
i--;
}
a[i+1]=temp;
}
for(i=0;i<10;i++)
printf("%2d,",a[i]);
getch();
}


好马不吃回头草 然而,我不是好马 可见,坏马也不吃回头草
2006-03-05 19:17
虫的传人
Rank: 1
等 级:新手上路
帖 子:88
专家分:0
注 册:2006-3-5
收藏
得分:0 
而且你定义的temp都没用到哦~

好马不吃回头草 然而,我不是好马 可见,坏马也不吃回头草
2006-03-05 19:29
快速回复:一个使用插入排序的程序错误
数据加载中...
 
   



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

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