数据结构知识整理(三)有序向量

从无序到有序

我们可以看到在无需向量的算法中,所需要的算法时间复杂度都不是特别理想,因此我们引入了排序算法,将无需向量整理成为有序向量。本节中,你将体验到“秩序”的力量,并见证一个非常高效,厉害的算法。



有序的好处

如果你的士兵按照一定的顺序排列好,你对他们进行点名、布置小队任务什么的,当然会比乱排的要方便,对向量中的元素也是如此,当它们按照从小到大的顺序排列好,你会发现很多算法都要方便不少。

有序性甄别

前面我们提到,无需向量和有序向量的操作接口是不一样的,所以在确定要使用什么接口之前,我们要对向量进行一个甄别,判断他们是不是已经有序。
该算法与气泡排序算法原理相同:

template<typename T>
int Vector1<T>::disordered() const
{
   
	int n;
	for (int i = 1; i < _size; i++)
	{
   
		if (_elem[i-1]>_elem[i])
		{
   
			n++;
		}
	}
	return n;
}

唯一化

向量操作算法中,最令我震撼和佩服的一个。
在有序向量中,我们可能会遇到值相等的元素相邻地进行排列,我们会想要将这些重复的元素删除,然而在有序向量中,把这些重复元素删除将比在无需向量中容易。
对于无需向量中的唯一化算法我将不再赘述,我们直接来看更为高效的这一种:
在这里插入图片描述
这幅图片很直观地展示出了我们将要采取的策略——很粗暴很直接:直接忽略那些重复的元素,把和当前元素互异的元素直接拿到当前元素的

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值