1. 程式人生 > >資料結構 筆記:排序的基本概念

資料結構 筆記:排序的基本概念

排序的一般定義

-排序是計算機內經常進行的一種操作,其目的是將一組“無序”的資料元素調整為“有序”的資料元素

排序的數學定義

假設含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:
    // ......
}

總結:

-排序是資料元素從無序到有序的過程

-排序具有穩定性,是選擇排序演算法的因素之一

-比較交換是排序的基本操作

-多關鍵字排序與單關鍵字排序無本質區別

-排序的事件效能是區分排序演算法好壞的主要因素