首页 > STL编程 > STL stable_sort 稳定排序

STL stable_sort 稳定排序

所谓稳定排序,是指对一个序列进行排序之后,如果两个元素的值相等,则原来乱序时在前面的元素现在(排好序之后)仍然排在前面。STL中提供stable_sort()函数来让我们进行稳定排序。为了更好的说明稳定排序的效果,我们定义了一个结构体元素,一个value成员和一个index成员,前者表示元素的值,后者表示乱序时的索引。

stable_sort()内部由归并排序来实现。

//Coded by 代码疯子
//http://www.programlife.net/
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;

typedef struct TagNode
{
	int value;
	int index;
}Node;

bool myCmp(const Node& a, const Node& b)
{
	return a.value < b.value;
}

int main(int argc, char **argv)
{
	vector<Node> coll;
	Node tmp;
	int idx = 0, num;
	
	while(cin >> num && num)
	{
		++idx;
		tmp.value = num;
		tmp.index = idx;
		coll.push_back(tmp);
	}
	
	stable_sort(coll.begin(), coll.end(), myCmp);
	
	cout << "Index\tValue:" << endl;
	vector<Node>::iterator pos;
	for(pos = coll.begin(); pos != coll.end(); ++pos)
	{
		cout << pos->index << "\t" << pos->value << endl;
	}

	return 0;
}

程序的运行结果如下图所示,可以看到,对于元素值相同的元素,索引小的在前面,稳定排序就是这么一个效果。

STL stable_sort


觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> STL stable_sort 稳定排序
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



分类: STL编程 标签: , , , , ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.