快排歸併面試演算法模版實現

2021-09-11 19:49:17 字數 1912 閱讀 5355

採用vector實現快排,堆排序,氣泡排序,二分查詢等常用演算法,並用string,int,double作了測試,原理網上很多,就不細說了,做了些簡單注釋。

快排歸併面試演算法模版實現/

#include

using

namespace std;

template

<

typename t>

void

swap1

(t &a, t &b)

template

<

typename t>

void

quicksort

(vector

&vec,

int left,

int right)

swap1

(vec[low]

, vec[key]);

//left和right不能變,此時low=high,左右分治遞迴下去

quicksort

(vec, left, high -1)

;quicksort

(vec, low +

1, right);}

template

<

typename t>

void

merge

(vector

&vec,

int left,

int mid,

int right)

template

<

typename t>

void

bubblesort

(vector

&vec)

template

<

typename t>

void

mergesort

(vector

&vec,

int left,

int right)

template

<

typename t>

intbinarysearch

(vector

&vec, t key)

//沒找到返回-1

return-1

;}intmain()

;//double a = ;

//int a = ;

//vectorvec(a, a+8);

//vectorvec1(vec);

vector vec;

vec.

push_back

("lucas");

vec.

push_back

("adam");

vec.

push_back

("ardark");

//for(int i = 0; i < 3; i++)

// vec.push_back(i);

//swap1(vec[0], vec[1]);

mergesort

(vec,

0, vec.

size()

-1);

//quicksort(vec, 0, vec.size() - 1);

//bubblesort(vec);

//int idx = binarysearch(vec, 3.5);

//cout << "the idx of finding is:" << idx << endl;

vector

::iterator ite;

for(ite = vec.

begin()

; ite < vec.

end(

); ite++

) cout <<

*ite << endl;

}

排序演算法 快排,歸併

從陣列中隨機選乙個數,比這個數大的放右邊,比這個數小的放左邊。快排中的乙個細節 如果乙個數等於p的時候,既可以在左邊又可以在右邊。這麼做是為了避免如果陣列中所有的數都一樣,則會造成資料的不平衡。快排的目的是能夠使得左邊和右邊的數都差不多,這樣的話時間複雜度就不會退化到o n 2 而是o n logn...

排序演算法 歸併 快排

歸併排序的思想是分治法,如果想要將乙個陣列排序,那麼將這個陣列分為左區間和右區間,左區間一定是小於右區間的,再將左區間繼續劃分,右區間也繼續劃分。最後將排好序的陣列全都歸併起來,這樣聽起來像是從上向下劃分,其實歸併排序主要是是從下向上,合併的過程。先將單個元素的陣列歸併為兩個元素的有序陣列 再將包含...

python實現快排演算法 python快排演算法詳解

快排是python經典演算法之一。1 下面講解的是什麼是快排和快排的圖示。2 快排是一種解決排序問題的運算方法。3 快排的原理 在陣列中任意選擇乙個數字作為基準,用陣列的資料和基準資料進行比較,比基準數字打的數字的基準數字的右邊,比基準數字小的數字在基準數字的左邊,第一次排序之後分為比基準資料大或比...