排序的一般定义
-排序是计算机内经常进行的一种操作,其目的是将一组“无序”的数据元素调整为“有序”的数据元素
排序的数学定义
假设含n个数据元素的序列为:{R1,R2,....,Rn},其相应的关键字序列为:{K1,K2,...,Kn};
这些关键字相互之间可以进行比较,即:在它们之间存在着这样一个关系:Kp1≤Kp2≤Kp3...≤Kpn
按此固有㽑将上式记录序列重新排列为:{Rp1,Rp2,...,Rpn} 的操作成为排序。
排序的稳定性
-如果在序列中有两个数据元素r[i]和r[j],它们的关键字k[i] == k[j] ,且在排序之前,对象r[i]排在r[j]前面;
如果在排序之后,对象r[j]仍在对象r[i]的前面,则称这个排序方法是稳定的,辅助称这个排序方法是不
稳定的。
多关键字排序
扫描二维码关注公众号,回复:
4067602 查看本文章
-排序时需要比较的关键字多余一个
·排序结果首先按关键字1进行排序
·当关键字1相同时按关键字2进行排序
·........
·当关键字n-1相同时按关键字n进行排序
排序中的关键操作
-比较
·任意两个数据元素通过比较操作确定先后次序
-交换
·数据元素之间需要交换才能得到预期结果
排序的审判
-时间性能
·关键性能差异体现比较和交换的数量
-辅助存储空间
·为完成排序操作需要的额外的存储空间
·必要时可以“空间换时间”
-算法的实现复杂性
·过于复杂的排序法可能影响可读性和可维护性
排序类设计
class Sort :public Object
{
private:
Sort();
Sort(const Sort&);
Sort& operator= (const Sort&);
template<typename T>
static void Swap(T& a,T& b)
{
T c(a);
a = b;
b = c;
}
public:
// ......
}
总结:
-排序是数据元素从无序到有序的过程
-排序具有稳定性,是选择排序算法的因素之一
-比较交换是排序的基本操作
-多关键字排序与单关键字排序无本质区别
-排序的事件性能是区分排序算法好坏的主要因素