| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 569 人关注过本帖
标题:请帮分析的做一下这个题目,或者给出相近的程序!
只看楼主 加入收藏
克里斯蒂
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-4
收藏
 问题点数:0 回复次数:7 
请帮分析的做一下这个题目,或者给出相近的程序!
用程序产生1000个0到999之间的随机整数(存放在数据文件中) ,任意选取两个排序方法,对这1000个数据排序,比较两个方法的效率。
2007-06-04 10:43
克里斯蒂
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-4
收藏
得分:0 
回复:(克里斯蒂)请帮分析的做一下这个题目,或者给出...
我这有两个排序方法,大家帮我看一下对没?
#include"stdio.h"
#include"stdlib.h"
#define Max 1000 //假设文件长度
typedef struct{ //定义记录类型
int key; //关键字项
}RecType;
typedef RecType SeqList[Max+1]; //SeqList为顺序表,表中第0个元素作为哨兵
int n; //顺序表实际的长度
//==========直接插入排序法======
void InsertSort(SeqList R) { //对顺序表R中的记录R[1‥n]按递增序进行插入排序
int i,j;
for(i=2;i<=n;i++) //依次插入R[2],……,R[n]
if(R[i].key<R[i-1].key){ //若R[i].key大于等于有序区中所有的keys,则R[i]留在原位 R[0]=R[i];j=i-1; //R[0]是R[i]的副本 do { //从右向左在有序区R[1‥i-1]中查找R[i] 的位置 R[j+1]=R[j]; //将关键字大于R[i].key的记录后移 j--; }while(R[0].key<R[j].key); //当R[i].key≥R[j].key 是终止
R[j+1]=R[0]; //R[i]插入到正确的位置上
}//endif }
//==========冒泡排序======= typedef enum{FALSE,TRUE} Boolean; //FALSE为0,TRUE为1
void BubbleSort(SeqList R) { //自下向上扫描对R做冒泡排序
int i,j; Boolean exchange; //交换标志 for(i=1;i<n;i++) { //最多做n-1趟排序
exchange=FALSE; //本趟排序开始前,交换标志应为假
for(j=n-1;j>=i;j--) //对当前无序区R[i‥n] 自下向上扫描
if(R[j+1].key<R[j].key){ //两两比较,满足条件交换记录
R[0]=R[j+1]; //R[0]不是哨兵,仅做暂存单元
R[j+1]=R[j];
R[j]=R[0];
exchange=TRUE; //发生了交换,故将交换标志置为真
}
if(! exchange) return; //本趟排序未发生交换,提前终止算法
}// endfor(为循环)
}
2007-06-04 10:57
克里斯蒂
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-4
收藏
得分:0 
回复:(克里斯蒂)请帮分析的做一下这个题目,或者给出...
请大家帮帮忙给看一眼,着急中.....谢谢!
2007-06-04 11:14
克里斯蒂
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-4
收藏
得分:0 
回复:(克里斯蒂)请帮分析的做一下这个题目,或者给出...

请大家给点建议啊,我比较盲目!!!

2007-06-04 11:28
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
在调用排序前后分别加个输出当前系统时间.

倚天照海花无数,流水高山心自知。
2007-06-04 12:12
克里斯蒂
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-4
收藏
得分:0 

请求大家帮忙啊,不然死定了

2007-06-04 12:19
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
两种排序的思路没有错.具体的,LZ不会检查.还有,其实
typedef struct{ //定义记录类型
int key; //关键字项
}RecType;//最起码这个定义是多余的.
typedef RecType SeqList[Max+1]; //SeqList为顺序表,表中第0个元素作为哨兵
int n;
可以写的简单点.
typedef struct{ //定义记录类型
int SeqList[Max+1]; //关键字项
int n;//线性表实际长度.
}RecType

当然数据结构区里有个排序的帖,里面有六种排序.你自己去看看吧.

倚天照海花无数,流水高山心自知。
2007-06-04 12:27
克里斯蒂
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2007-6-4
收藏
得分:0 
回复:(克里斯蒂)请帮分析的做一下这个题目,或者给出...
我的这个程序还有什么不合适的地方吗?
可不可以帮我做个比较,哪个比较好,最好有理由
2007-06-04 16:42
快速回复:请帮分析的做一下这个题目,或者给出相近的程序!
数据加载中...
 
   



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

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