STL:划分与排序--3

 

#include <iostream>//std::cout
#include<iomanip>//输入输出格式化
#include<functional>//函数对象
#include<algorithm>//算法
#include<cmath>//数学函数
#include<string>//String
#include<cstring>//memset
#include<vector>//vector
using namespace std;


bool myOperation(int a,int b) {
	return a<b;
}
struct obj {
	bool operator() (int a,int b) {
		return a<b;
	}
} myobject;
int main(int argc,char** argv) {

	vector<int> myVector;
	for(int i=1; i<10; i++) {
		myVector.push_back(i);
	}

	vector<int>myCopy(5);

	//output the elements in the vector
	random_shuffle(myVector.begin(),myVector.end());

//  for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
//		cout<<*iter<<" ";
//	}
//cout<<endl;

	//using default comparison
//	sort(myVector.begin(),myVector.end());
//	stable_sort(myVector.begin(),myVector.end());

//	partial_sort(myVector.begin(),myVector.begin()+5,myVector.end());
	partial_sort_copy(myVector.begin(),myVector.end(),myCopy.begin(),myCopy.end());

	for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	for(vector<int>::iterator iter=myCopy.begin(); iter!=myCopy.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	//using function as comp
	random_shuffle(myVector.begin(),myVector.end());
//  for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
//		cout<<*iter<<" ";
//	}
//cout<<endl;

//	sort(myVector.begin(),myVector.end(),myOperation);
//	stable_sort(myVector.begin(),myVector.end(),myOperation);

//	partial_sort(myVector.begin(),myVector.begin()+5,myVector.end(),myOperation);
	partial_sort_copy(myVector.begin(),myVector.end(),myCopy.begin(),myCopy.end(),myOperation);

	for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;


	for(vector<int>::iterator iter=myCopy.begin(); iter!=myCopy.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	//using object as comp
	random_shuffle(myVector.begin(),myVector.end());
//  for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
//		cout<<*iter<<" ";
//	}
//cout<<endl;

//	sort(myVector.begin(),myVector.end(),myobject);
//	stable_sort(myVector.begin(),myVector.end(),myobject);

//	partial_sort(myVector.begin(),myVector.begin()+5,myVector.end(),myobject);
	partial_sort_copy(myVector.begin(),myVector.end(),myCopy.begin(),myCopy.end(),myobject);

	for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	for(vector<int>::iterator iter=myCopy.begin(); iter!=myCopy.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	//using  function object as comp
	random_shuffle(myVector.begin(),myVector.end());
//  for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
//		cout<<*iter<<" ";
//	}
//cout<<endl;

//	sort(myVector.begin(),myVector.end(),less<int>());
//	stable_sort(myVector.begin(),myVector.end(),less<int>());

//	partial_sort(myVector.begin(),myVector.begin()+5,myVector.end(),less<int>());
	partial_sort_copy(myVector.begin(),myVector.end(),myCopy.begin(),myCopy.end(),less<int>());

	for(vector<int>::iterator iter=myVector.begin(); iter!=myVector.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;

	for(vector<int>::iterator iter=myCopy.begin(); iter!=myCopy.end(); iter++) {
		cout<<*iter<<" ";
	}
	cout<<endl;
	return 0;
}


 

partial_sort

default (1)	
template <class RandomAccessIterator>
  void partial_sort (RandomAccessIterator first, RandomAccessIterator middle,
                     RandomAccessIterator last);
custom (2)	
template <class RandomAccessIterator, class Compare>
  void partial_sort (RandomAccessIterator first, RandomAccessIterator middle,
                     RandomAccessIterator last, Compare comp);

功能:对mid所指位置之前的元素进行排列

参数:

返回值:空

运行结果:

 

partial_sort_copy

default (1)	
template <class InputIterator, class RandomAccessIterator>
  RandomAccessIterator
    partial_sort_copy (InputIterator first,InputIterator last,
                       RandomAccessIterator result_first,
                       RandomAccessIterator result_last);
custom (2)	
template <class InputIterator, class RandomAccessIterator, class Compare>
  RandomAccessIterator
    partial_sort_copy (InputIterator first,InputIterator last,
                       RandomAccessIterator result_first,
                       RandomAccessIterator result_last, Compare comp);

功能:不改变原来的元素序列,[result_first,result_last)中的元素是[first,last)中局部有序的元素序列(所以一般result中的长度小于原序列)

参数:

返回值:返回复制数据的迭代器。

运行结果:

sort

功能:元素的排序

运行结果:

stable_sort

功能:元素的稳定排序

运行结果:(这里未出现重复元素,所以不能体现其稳定性)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值