採用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 快排的原理 在陣列中任意選擇乙個數字作為基準,用陣列的資料和基準資料進行比較,比基準數字打的數字的基準數字的右邊,比基準數字小的數字在基準數字的左邊,第一次排序之後分為比基準資料大或比...