请用四种常用的方法对一个数组排序,a[10]={3,,5,6,13,23,4,7,855,1223,10}
请写出源码,谢谢。四种方法分别是:冒泡法,选择法,直接插入法,还有一种忘了叫什么名字,相信大哥们都知道?
请用四种常用的方法对一个数组排序,a[10]={3,,5,6,13,23,4,7,855,1223,10}
请写出源码,谢谢。四种方法分别是:冒泡法,选择法,直接插入法,还有一种忘了叫什么名字,相信大哥们都知道?
冒泡法:
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;
}
}
还有几种有时间再帮你写出来,至于你不知名的那种应该是“归并排序”
对,就是归并排序,
你写的我有有好多地方不懂:为什么没有主函数main()?
ElemType 这是什么类型啊?
retum;这是什么意思?
我还没学数据结构,刚看完谭浩强的“C程序设计”第二版,问题多多!
main是主函数。return是返回啊,抱歉,打错了!
ElemTypeA是表示定义一个待筛数组!
if(flag==0) return;//进行一趟后若无交换,表明已有序,则返回!
其他几种方法我有空在与你写出吧,到时候帮你将注释写详细,最近要其末考试了,小女在此祝大家其末都能考个好成绩!
归并排序:
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数组所占用的动态存储空间
}
归并排序:
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数组所占用的动态存储空间
}
不好意思,掉了个左括号!