自然分组的合并排序

该博客探讨了一个自然分组的排序方法,通过首先找出输入序列中的升序子序列,然后逐步合并相邻的有序子序列,最终得到完全排序的序列。作者提到避免使用数组记录子序列下标,而是直接在查找过程中进行合并,尽管实现过程中的细节较多且代码复杂,但实现了自然分组的排序思想。
摘要由CSDN通过智能技术生成

问题描述:

给一个序列{3,2,5,8,4,7,6,9},先把各自升序的子序列都找出来:{3},{2,5,8},{4,7},{6,9};然后把相邻的两个有序子序列合并为一个新的有序子序列:{2,3,5,8},{4,6,7,9},然后继续合并相邻的有序子序列,直到只剩一个序列:{2,3,4,5,6,7,8,9}.

下面是代码实现:

PS:看到很多人都用数组来记录每个有序子数组的下标,个人觉得那样有点麻烦,于是就在寻找有序子数组的过程中边找边记下来,找到俩相邻有序数组就调用一次合并算法(Merge),接着去找下一次的相邻有序子序列,,,不过就是很多细节都是在调试代码的时候才考虑到的,代码看起来也很麻烦,背离初衷了哈哈哈哈哈

#include <iostream>

using namespace std;

void Merge(int c[], int d[], int l, int m, int r);
void NatureMergeSort(int a[], int n);


int main(void)
{
	cout<<"请输入数组中元素的个数:";
	int n;
	cin>>n;
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值