以下是排序和通用演算法:提供元素排序策略
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九個元素
sort: 以預設公升序的方式重新排列指定範圍內的元素。若要改排序規則,可以輸入比較函式
class cstudent:
public:
int m_iid;
string m_strname;
}//學號比較函式
bool compare(const cstudent &stua,const cstudent &stub)
#include#include#include#includeusing namespace std;
class cstudent
public:
int m_iid;
string m_strname;
};//學號比較函式
bool compare(const cstudent &stua, const cstudent &stub)
void main()
cout << endl;
sort(vecstu.begin(), vecstu.end(), compare);
//此時,vecstu容器包含了按順序的"老大物件","老二物件","老三物件","老四物件"
random_shuffle
: 對指定範圍內的元素隨機調整次序。
srand(time(0))
; //設定隨機種子
vectorvecint;
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 "
vectorvecint;
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之排序演算法
1.merge 以下是排序和通用演算法 提供元素排序策略 merge 合併兩個有序序列,存放到另乙個序列。例如 vecinta,vecintb,vecintc是用vector宣告的容器,vecinta已包含1,3,5,7,9元素,vecintb已包含2,4,6,8元素 vecintc.resize ...
STL之排序演算法
sorting sort sort elements in range function template stable sort sort elements preserving order of equivalents function template partial sort partial...
STL之演算法
演算法是指解決問題的方 而完整的描述,對於規範的輸入,在有限時間內要獲得所需要的輸出。不同的演算法可能使用不同的時間 空間或效率完成同樣的任務。想要評估乙個演算法的好壞,目前可以通過時間複雜度和空間複雜度來進行衡量。時間複雜度,是指演算法執行指令所需的計算量。演算法的執行時間和其所要處理的資料之間存...