C++ STL排序算法 对所有元素排序sort、stable_sort使用方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意:不可用对list或forward list调用这些算法,因为两者都不提供随机访问迭代器.不过你可以使用它们的成员函数sort()来进行排序

sort()保证了很不错的平均效能nlogn

## 复杂度

使用例子:

template<typename T>
inline void INSERT_ELEMENTS(T& coll, int first, int last)
{
	for (int i = first; i <= last; ++i)
	{
		coll.insert(coll.end(), i);
	}
}
template<typename T>
inline void PRINT_ELEMENTS(const T & coll, const string& optcstr = "")
{
	cout << optcstr;
	for (auto elem : coll)
	{
		cout << elem << ' ';
	}
	cout << endl;
}
int main()
{
	deque<int>a;
	INSERT_ELEMENTS(a, 1, 9);
	INSERT_ELEMENTS(a, 1, 9);
	PRINT_ELEMENTS(a, "a: ");
	sort(a.begin(), a.end());
	PRINT_ELEMENTS(a, "a: ");
	sort(a.begin(), a.end(), greater<int>());
	PRINT_ELEMENTS(a, "sorted>: ");

}

在这里插入图片描述

使用stable_sort:

template<typename T>
inline void PRINT_ELEMENTS(const T & coll, const string& optcstr = "")
{
	cout << optcstr;
	for (auto elem : coll)
	{
		cout << elem << ' ';
	}
	cout << endl;
}
bool lessLength(const string & s1, const string &s2)
{
	return s1.length() < s2.length();
}
int main()
{
	vector<string>a = { "1xxx","2x","3x","4x","5xx","6xxxx","7xx","8xxx","9xx",
						"10xxx","11","12","13","14xx","15","16","17" };
	vector<string>b(a);

	PRINT_ELEMENTS(a, "on entry:\n");
	sort(a.begin(), a.end(), lessLength);
	stable_sort(b.begin(), b.end(), lessLength);
	PRINT_ELEMENTS(a, "\nsort: \n");
	PRINT_ELEMENTS(b, "\nstable_sort: \n");

}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值