STL之排序演算法

2021-08-07 03:30:45 字數 1972 閱讀 9352

1.merge()

以下是排序和通用演算法:提供元素排序策略

merge: 合併兩個有序序列,存放到另乙個序列。

例如:

vecinta,vecintb,vecintc是用vector宣告的容器,vecinta已包含1,3,5,7,9元素,vecintb已包含2,4,6,8元素

vecintc.resize(9);  //擴大容量

merge(vecinta.begin(),vecinta.end(),vecintb.begin(),vecintb.end(),vecintc.begin());

此時vecintc就存放了按順序的1,2,3,4,5,6,7,8,9九個元素

2.sort()

sort: 以預設公升序的方式重新排列指定範圍內的元素。若要改排序規則,可以輸入比較函式。

//學生類

class cstudent:

public:

int m_iid;

string m_strname;

}//學號比較函式

bool compare(const cstudent &stua,const cstudent &stub)

3.random_shuffle()

random_shuffle: 對指定範圍內的元素隨機調整次序。

srand(time(0)); //設定隨機種子

vector

vecint;

vecint.push_back(1);

vecint.push_back(3);

vecint.push_back(5);

vecint.push_back(7);

vecint.push_back(9);

string str("itcastitcast ");

random_shuffle(vecint.begin(), vecint.end()); //隨機排序,結果比如:9,7,1,5,3

random_shuffle(str.begin(), str.end()); //隨機排序,結果比如:" itstcasticat "

reverse()

vector

vecint;

vecint.push_back(1);

vecint.push_back(3);

vecint.push_back(5);

vecint.push_back(7);

vecint.push_back(9);

reverse(vecint.begin(), vecint.end()); //

綜合**

void main_merge()

class student

void printt()

public:

string m_name;

int m_id;

};bool compares(student &s1, student &s2)

void main_sort()

//sort 根據自定義函式物件 進行自定義資料型別的排序

//替換 演算法的統一性 (實現的演算法和資料型別的分離) ===>技術手段函式物件

sort(v1.begin(), v1.end(), compares );

for (vector

::iterator it=v1.begin(); it!=v1.end(); it++)

}void main_random_shuffle()

void main_reverse()

STL之排序演算法

以下是排序和通用演算法 提供元素排序策略 merge 合併兩個有序序列,存放到另乙個序列。例如 vecinta,vecintb,vecintc是用vector宣告的容器,vecinta已包含1,3,5,7,9元素,vecintb已包含2,4,6,8元 vecintc.resize 9 擴大容量 me...

STL之排序演算法

sorting sort sort elements in range function template stable sort sort elements preserving order of equivalents function template partial sort partial...

STL之演算法

演算法是指解決問題的方 而完整的描述,對於規範的輸入,在有限時間內要獲得所需要的輸出。不同的演算法可能使用不同的時間 空間或效率完成同樣的任務。想要評估乙個演算法的好壞,目前可以通過時間複雜度和空間複雜度來進行衡量。時間複雜度,是指演算法執行指令所需的計算量。演算法的執行時間和其所要處理的資料之間存...