STL 常用演算法(三)排序演算法

2021-10-06 04:18:38 字數 1634 閱讀 3254

演算法簡介:

功能描述:

函式原型:

#include

#include

void

myprint

(int val)

void

test01()

intmain()

函式原型:

#include

#include

#include

class

myprint};

void

test01()

for_each

(v.begin()

, v.

end(),

myprint()

);cout << endl;

//打亂順序

random_shuffle

(v.begin()

, v.

end())

;for_each

(v.begin()

, v.

end(),

myprint()

);cout << endl;

}int

main()

總結:**random_shuffle洗牌演算法比較實用,使用時記得加隨機數種子

功能描述:

函式原型:

#include

#include

class

myprint};

void

test01()

vector<

int> vtarget;

//目標容器需要提前開闢空間

vtarget.

resize

(v1.

size()

+ v2.

size()

);//合併 需要兩個有序序列

merge

(v1.

begin()

, v1.

end(

), v2.

begin()

, v2.

end(

), vtarget.

begin()

);for_each

(vtarget.

begin()

, vtarget.

end(),

myprint()

);cout << endl;

}int

main()

總結:merge合併的兩個容器必須的有序序列

功能描述:

函式原型:

#include

#include

class

myprint};

void

test01()

intmain()

總結:reverse反轉區間內元素

三 排序演算法

所有例子都是公升序排序。資料分成兩部分 已排序和待排序。排序過程中,資料移動分為兩種 1.直接移動 移動資料的儲存位置,消耗時間 2.邏輯移動 改變指向這些資料的指標 特點 遍歷待排序資料,把最小值與起始資料 最左邊 交換位置 次數 第一輪n 1次,第k輪n k次 步驟 1.如果待排序資料大於0,則...

演算法基礎(三) 排序

我們先來看看幾種排序的結構圖 排序是否穩定 比如 排序前 25 7 6 4 29 3 排序後 22 3 4 5 6 7 9 排序前藍2在紅 2前面,排序後藍 2依然在紅 2前面,則所用的排序方法是穩定的。如果排序後,紅 2有可能在藍 2前面,那麼所用的排序方法是不穩定的 下面說說前面幾種排序的時間複...

(三)排序演算法之選擇排序

選擇排序和之前說的氣泡排序和插入排序套路差不多,都是將陣列分隔為已排序和未排序子陣列,主要區別在於元素選取和放入。選擇排序是從未排序陣列中選最小 或最大 的乙個放入已排序的陣列後。下面用 分隔已排序和未排序陣列,如 待排序資料 7,0,2,8,1 一開始有序陣列是空的 一次排序 0 7,2,8,1 ...