• 大小: 2KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-01
  • 语言: 其他
  • 标签:

资源简介

1.写一个“由底向上”的归并分类排序算法。 2.用快速分类算法对10个数(键盘输入)进行从大到小或从小到大的排列并输出结果。

资源截图

代码片段和文件信息

#include
#include
using namespace std;
void combine(int *intintint);
void mergesort(int *sortarrayint lowint high)
{
int k=(low+high)/2;
if(low {
mergesort(sortarraylowk);//对low到k的前半段进行归并排序
mergesort(sortarrayk+1high);//对k+1到high的后半段进行归并排序
combine(sortarraylowkhigh);//把有序的low->k和k+1->high这两段合并到low到high
}
}
//把有序的两段数组合并为一段数组,并使合并这段数组同样有序
void combine(int *sortarrayint lowint kint high)
{
vector temp(high-low+10); //temp是辅助存储数组,辅助存储当前排好序的状态
int ijp;
i=low;//控制前半段下标移动
j=k+1;//控制后半段下标移动
p=0; //控制temp的小标移动
while(i<=k&&j<=high)//但前半段或者后半段的数全部排好序(放入temp数组)时退出
{
if(*(sortarray+i)<*(sortarray+j))  //从小到大排序
{
temp[p]=*(sortarray+i);
i++;
}
else
{
temp[p]=*(sortarray+j);
j++;
}
p++;
}
//把前半段没有排好序的数排序,放入temp数组
while(i<=k&&j>high)
{
temp[p]=*(sortarray+i);
i++;
p++;
}
//把后半段没有排好序的数排序,放入temp数组
while(j<=high&&i>k)
{
temp[p]=*(sortarray+j);
j++;
p++;
}
//把temp数组中的数拷贝会需要排序的数组,完成归并
for(i=0;i {
*(sortarray+low+i)=temp[i];
}
}
int main()
{
int sortarray[10]={0};
int numlowhigh;//num是需要排序的个数,low和high控制排序的数据段
int i=0;
//freopen(“stdin.txt““r“stdin);
cout<<“请输入排序的个数:“;
cin>>num;
for(i=1;i<=num;i++)
{
cout<<“请输入数:“< cin>>*(sortarray+i);
}
cout<<“输入最小最大的个数:“< cin>>low>>high;

cout<<“初始数据为:“< for(i=1;i<=num;i++)
{
cout<<*(sortarray+i)<<“ “;
}
cout< //进行归并排序
mergesort(sortarraylowhigh);

cout<<“从小到大排序后的数据为:“< for(i=1;i<=num;i++)
{
cout<<*(sortarray+i)<<“ “;
}
cout< return 0;
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件         19  2010-05-24 21:00  归并分类排序\stdin.txt

     文件       1275  2010-05-24 20:57  归并分类排序\快速排序.cpp

     目录          0  2010-06-12 23:11  归并分类排序

     文件       1929  2010-05-24 21:00  归并分类排序\guibing.cpp

----------- ---------  ---------- -----  ----

                 3223                    4


评论

共有 条评论

相关资源