标题:[求助]排序法
只看楼主
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
 问题点数:0 回复次数:11 
[求助]排序法

请用四种常用的方法对一个数组排序,a[10]={3,,5,6,13,23,4,7,855,1223,10}

请写出源码,谢谢。四种方法分别是:冒泡法,选择法,直接插入法,还有一种忘了叫什么名字,相信大哥们都知道?

搜索更多相关主题的帖子: 大哥 插入法 
2004-07-01 11:56
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1851
专家分:1858
注 册:2004-5-30
得分:0 

冒泡法:

void BubbleSort(ElemTypeA[ ],int n)//采用气泡排序的方法对数组A中的N的元素排序

{

ElemType x;

int i,,j,flag;

for(i=1;i<=n-1;i++)//i表示趟数,最多进行N-1趟

{ flag=0;

for(j=n-1;j>=i;j--)

if(A[j].stn<A[j-1].stn){

x=A[j];A[j]=a[j-1];A[j-1]=x;

flag=1;

}

if(flag==0) retum;

}

}

还有几种有时间再帮你写出来,至于你不知名的那种应该是“归并排序”


感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2004-07-02 00:45
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
得分:0 

对,就是归并排序,

你写的我有有好多地方不懂:为什么没有主函数main()?

ElemType 这是什么类型啊?

retum;这是什么意思?

我还没学数据结构,刚看完谭浩强的“C程序设计”第二版,问题多多!


2004-07-02 09:20
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1851
专家分:1858
注 册:2004-5-30
得分:0 

main是主函数。return是返回啊,抱歉,打错了!

ElemTypeA是表示定义一个待筛数组!


感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2004-07-03 00:02
guanyou
Rank: 1
等 级:新手上路
帖 子:38
专家分:0
注 册:2004-6-14
得分:0 
流星雨妹妹厉害啊!!!!

2004-07-03 00:20
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
得分:0 

流星雨:

你是说你写的只是一个函数,而没有写出主函数?是吗?

还有一个小问题:return;后面不带任何参数代表什么意思啊?


2004-07-03 17:21
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1851
专家分:1858
注 册:2004-5-30
得分:0 

if(flag==0) return;//进行一趟后若无交换,表明已有序,则返回!

其他几种方法我有空在与你写出吧,到时候帮你将注释写详细,最近要其末考试了,小女在此祝大家其末都能考个好成绩!


感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2004-07-05 13:52
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1851
专家分:1858
注 册:2004-5-30
得分:0 

归并排序:

void MergeSort (ElemType A [ ],int n)

//采用归并排序的方法对数组A中的N个记录进行排序

{

ElemType*R=new Elye [n];//定义长度为N的辅助数组R

int len=1;//从有序表长度为一开始

while (len<n)

Mergepass(R ,A, n ,len);//从A归并得到R中,得到每个有序表的长度为2*len.

len*=2;//修改len的值为R中的每个有序表的长度

Mergepass(A,R,n ,len);//从R并得到A,得到每个有序表的长度为2*len.

len*=2;//修改len的值为A的每个有序表的长度

}

delete [ ] R;//释放R数组所占用的动态存储空间

}


感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2004-07-06 00:13
流星雨
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:JAVA风暴
等 级:版主
威 望:43
帖 子:1851
专家分:1858
注 册:2004-5-30
得分:0 

归并排序:

void MergeSort (ElemType A [ ],int n)

//采用归并排序的方法对数组A中的N个记录进行排序

{

ElemType*R=new Elye [n];//定义长度为N的辅助数组R

int len=1;//从有序表长度为一开始

while (len<n){

Mergepass(R ,A, n ,len);//从A归并得到R中,得到每个有序表的长度为2*len.

len*=2;//修改len的值为R中的每个有序表的长度

Mergepass(A,R,n ,len);//从R并得到A,得到每个有序表的长度为2*len.

len*=2;//修改len的值为A的每个有序表的长度

}

delete [ ] R;//释放R数组所占用的动态存储空间

}

不好意思,掉了个左括号!


感谢你们带我找到星空下美丽神话,无论经历多少苦痛也不放弃的梦;插上希望翅膀乘风我和你们飞翔,飞过海天尽头携手把梦想实现.....
2004-07-06 00:15
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
得分:0 

谢谢啊!

不过我还是看不懂,没学数据结构?真郁闷!


2004-07-06 08:26



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-2995-1-1.html




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

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