| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1144 人关注过本帖
标题:[讨论]大家一起讨论排序的问题
只看楼主 加入收藏
wolfspirit
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-12-6
收藏
 问题点数:0 回复次数:17 
[讨论]大家一起讨论排序的问题
有N个整数,按升序存放在一个数组中。要求输入一个数 并且保持数组仍然有序~~~~~
搜索更多相关主题的帖子: 要求 
2007-01-20 15:45
gqchaoyue
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-1-20
收藏
得分:0 

c不支持变长数组,所以要用线形表来解决.
其实很简单的

2007-01-20 17:38
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
将该数赋予变量sum,s为数组(预先定义为(序列元素个数+1)个元素)

用for或while顺序搜索数组,遇到第一个比sum大的停止
也就是while(s[i]<sum) i++;

s[序列最大元素]到s[i]移动到s[该元素序列+1]
最后s[i-1]=sum;

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2007-01-20 17:45
hucheng
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-20
收藏
得分:0 
我的做法,主函数中另建一个元素个数为N+1 的数组,其后参照以下程序
void insert(int a*,int b*,int n,int new){int i,j=0;
for(i=0;i<n+1;i++){if (a[i]>new){b[j++]=new;i--;}
else b[j++]=i;
}
}

[url=\"http://\"]我的网站:趣味编程乐园[/url]
2007-01-20 18:52
hucheng
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-1-20
收藏
得分:0 
以下是引用hucheng在2007-1-20 18:52:14的发言:
我的做法,主函数中另建一个元素个数为N+1 的数组,其后参照以下程序
void insert(int a*,int b*,int n,int new){int i,j=0;
for(i=0;i<n+1;i++){if (a[i]>new){b[j++]=new;i--;}
else b[j++]=a[i];
}
}

不好意思,刚才出了点错误,红色显示修正后的方案

[url=\"http://\"]我的网站:趣味编程乐园[/url]
2007-01-20 18:54
电脑小书虫
Rank: 1
等 级:新手上路
帖 子:39
专家分:0
注 册:2007-1-1
收藏
得分:0 
顶3楼的

有梦最美,希望相随
2007-01-20 22:37
wolfspirit
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-12-6
收藏
得分:0 
以下是引用卧龙孔明在2007-1-20 17:45:13的发言:
将该数赋予变量sum,s为数组(预先定义为(序列元素个数+1)个元素)

用for或while顺序搜索数组,遇到第一个比sum大的停止
也就是while(s[i]<sum) i++;

s[序列最大元素]到s[i]移动到s[该元素序列+1]
最后s[i-1]=sum;

能不能提供一下源程序,小生有点不明白!~!~!


我有两次生命→第一次是出生;第二次是遇见C!
2007-01-21 09:37
gqchaoyue
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-1-20
收藏
得分:0 

我总觉得这样太简单了,不过我还是按三楼的思路写了个程序
#include<stdio.h>
#define N 5

main()
{
int m,i,j;//m是输入的整数
int a[N+1]={2,4,6,8,10};
scanf("%d",&m);
printf("\n");
for(i=0;i<N;i++)
if(m>a[i])continue;
else{j=i;break;}
if(j>=i)a[N]=m;
else
{for(i=N-1;i>=j;i--)
a[i+1]=a[i];
a[j]=m;
}
for(i=0;i<=N;i++)
printf("%d ",a[i]);
}
程序在turboC3.0下编译通过,并运行成功.

2007-01-21 10:50
gqchaoyue
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-1-20
收藏
得分:0 
不过我还是觉得用线形表更好.
那样插入几个整数都可以.
2007-01-21 10:52
wolfspirit
Rank: 1
等 级:新手上路
帖 子:97
专家分:0
注 册:2006-12-6
收藏
得分:0 
输入3 ,8楼的结果是2 4 6 8 10 3 不是有序的。。
我要的结果应该是 2 3 4 6 8 10
请前辈在指点一下!~!~

我有两次生命→第一次是出生;第二次是遇见C!
2007-01-21 16:25
快速回复:[讨论]大家一起讨论排序的问题
数据加载中...
 
   



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

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