`
java-mans
  • 浏览: 11457033 次
文章分类
社区版块
存档分类
最新评论

何谓排序准则

 
阅读更多

所谓“排序准则”,必须定义strict weak ordering,其意义如下

1必须是“反对称的(antisymmetric)”

对operator<而言,如果x<y为真,则y<x为假

对判断式predicate op()而言,如果op(x,y)为真,则op(y,x)为假

2必须是“可传递的(transitive)”

对operator<而言,如果x<y为真且y<z为真,则x<z为真

对判断式predicate op()而言,如果op(x,y)为真且op(y,z)为真则op(x,z)为真

3必须是“非自反的(irreflexive)”

对operator<而言,x<x永远为假

对判断式predicate op()而言,op(x,x)永远为假

下面的两个排序是等价的:

#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
class PaiXu{
public:
	bool operator()(int a,int b){
		return a>b;
	}
};
int main(){
	int a[]={2,8,2,1,3,6,5,4,7};
	vector<int>v(a,a+sizeof(a)/sizeof(*a));
	sort(v.begin(),v.end(),PaiXu());
	for(vector<int>::iterator itera=v.begin();itera!=v.end();++itera){
		cout<<*itera<<" ";
	}
	cout<<endl;
	system("pause");
	return 0;
}
#include<iostream>
#include<string>
#include<algorithm>
#include<vector>
using namespace std;
bool paixu(int a,int b){
	return a>b;
}
int main(){
	int a[]={2,8,2,1,3,6,5,4,7};
	vector<int>v(a,a+sizeof(a)/sizeof(*a));
	sort(v.begin(),v.end(),paixu);
	for(vector<int>::iterator itera=v.begin();itera!=v.end();++itera){
		cout<<*itera<<" ";
	}
	cout<<endl;
	system("pause");
	return 0;
}

第一程序用反函数,第二程序用了普通函数:

结果如下:



分享到:
评论

相关推荐

    SQL语言艺术

    本书分为12章,每一章包含许多原则或准则,并通过举例的方式对原则 进行解释说明。这些例子大多来自于实际案例,对九种SQL经典查询场景以 及其性能影响讨论,非常便于实践,为你的实际工作提出了具体建议。本书 适合...

    Thinking in Java 中文第四版+习题答案

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为...

    Think in Java(中文版)chm格式

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯...

    JAVA_Thinking in Java

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为...

    Java初学者入门教学

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为...

    ThinkInJava

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为...

    java 编程入门思考

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为...

    thinkinjava

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为...

    Thinking in Java简体中文(全)

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为...

    java联想(中文)

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为...

    Thinking in Java(中文版 由yyc,spirit整理).chm

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为...

    JAVA_Thinking in Java(中文版 由yyc,spirit整理).chm

    6.7.1 何谓“上溯造型”? 6.8 final关键字 6.8.1 final数据 6.8.2 final方法 6.8.3 final类 6.8.4 final的注意事项 6.9 初始化和类装载 6.9.1 继承初始化 6.10 总结 6.11 练习 第7章 多形性 7.1 上溯造型 7.1.1 为...

Global site tag (gtag.js) - Google Analytics