数据结构 笔记:排序的基本概念

排序的一般定义

-排序是计算机内经常进行的一种操作,其目的是将一组“无序”的数据元素调整为“有序”的数据元素

排序的数学定义

假设含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]的前面,则称这个排序方法是稳定的,辅助称这个排序方法是不

稳定的。

多关键字排序

-排序时需要比较的关键字多余一个

·排序结果首先按关键字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:
    // ......
}

总结:

-排序是数据元素从无序到有序的过程

-排序具有稳定性,是选择排序算法的因素之一

-比较交换是排序的基本操作

-多关键字排序与单关键字排序无本质区别

-排序的事件性能是区分排序算法好坏的主要因素

猜你喜欢

转载自blog.csdn.net/qq_29962483/article/details/83788659