原路归并排序

//原地归并排序不需要辅助数组即可归并。关键在于merge这个函数。
#include<iostream>
using namespace std;

void reverse(int *data,int n)
{
	for(int i=0;i<n/2;i++)
	{
		swap(data[i],data[n-i-1]);
	}
}

//将含有n个元素的E数组向左循环移位i个位置
void exchange(int *data,int n,int i)
{
	reverse(data,i);
	reverse(data+i,n-i);
	reverse(data,n);
}

void merge(int *data,int start,int mid,int end)
{
	int i=start;
	int j=mid;
	int k=end;
	while(i<j&&j<=k)
	{
		int step=0;
		while(i<j && data[i]<=data[j])
			++i;
		while(j<=k && data[i]>=data[j])
		{
			++j;
			++step;
		}
		//data+i为子数组的首地址,j-i为子数组元素的个数,j-i-step为左循环移位的个数
		exchange(data+i,j-i,j-i-step);
		i=i+step;//下一个比较的元素
	}
	for(int i=0;i<10;i++)
		cout<<data[i]<<" ";
	cout<<"\n"<<endl;
}


void MergeSort(int *data,int start,int end)
{
	if(start<end)
	{
		int mid=(start+end)/2;
		MergeSort(data,start,mid);
		MergeSort(data,mid+1,end);
		merge(data,start,mid+1,end);
	}
}
void main()
{
	int data[]={6,4,3,1,7,8,2,9,5,0};
	int len=sizeof(data)/sizeof(int);
	MergeSort(data,0,len-1);

	for(int i=0;i<len;i++)
		cout<<data[i]<<" ";
	cout<<endl;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
红外黑线循迹小车是一种智能机器人模型,它利用安装在其底座的红外传感器感知地面的颜色差异,并通过编码实现特定的路径追踪行为。通常,在这种小车上会配备一对或者四对红外传感器,分别位于车辆的前部两侧或者四周,用于检测黑色线条(如道路标记或者赛道边界)。 当红外黑线循迹小车行驶时,其核心功能之一就是能够跟随铺设在地面上的一条连续的黑色线行进。这条线可以是赛道、迷宫路径或者是简单的起点到终点路线。每个传感器都有一个特定的工作范围,一旦检测到黑色线的存在,该传感器就会向微控制器发送信号,控制电机驱动转向,使得小车沿着直线继续前进。如果线突然消失或者偏离了预设的路径,则小车需要调整方向回到原来的线上。 原路返回是红外黑线循迹小车的一种高级应用功能。当遇到某种触发条件(例如碰撞障碍物、达到预定的目标点、完成特定任务等),小车应该自动识别并返回至出发点。这一过程涉及到多种技术: 1. **路径识别**:除了跟踪单一线以外,小车还需要具备识别复杂路径的能力,并且能准确判断自身位置,以便于计算回程路线。 2. **决策机制**:基于预先设定的规则或算法,如使用PID(比例积分微分)、模糊逻辑、遗传算法或其他人工智能方法,帮助小车做出是否继续前行还是改变方向的决定。 3. **定位与导航**:小车应有定位系统,如使用陀螺仪、加速度计、磁力计等组合起来的IMU(惯性测量单元)设备,以及可能的GPS辅助,来确定其当前位置并规划回程路线。 4. **避免障碍**:在返回过程中,小车需能识别并避开沿途可能出现的障碍物,保持路径的顺畅。 5. **能量管理**:考虑到续航能力限制,小车需要高效节能的操作策略,特别是在进行复杂的路径寻找和返回操作时。 实现原路返回功能的关键在于算法设计和硬件配置的优化。这包括但不限于路径规划、避障策略、传感器校准、电池管理和微处理器控制等多个方面。同时,实际应用中还需考虑环境因素的影响,比如光线强度、地面材质反射特性等,以保证传感器的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值