Powered by:AB_IN 局外人
5.18 直播總結。
一、快排模版
~~
void quick_sort(int a[],int l ,int r)
{
int i=l,j=r;
int mid=(l+r)>>1;//以中間爲基準點,不斷靠近基準點
int x=a[mid];
while(i<=j){
while(a[i]<x) i++;//注意這裏是x,不是a[mid],因爲a[mid]在另一個遞歸會變
while(a[j]>x) j--;
if(i<=j){
swap(a[i],a[j]);//基準數左邊比他大的與右邊比他小的數交換
i++;j--;
}
}
if(l<j) quick_sort(a,l,j);//再確立一個區間,一個基準數
if(l<r) quick_sort(a,i,r);
}
二、歸併模版
~~
void _merge(int l,int mid,int r)
{
int p1=l,p2=mid+1;///兩個指針,p1爲左邊數組的指針的第一個,p2爲右邊數組的指針的第一個
for(int i=l;i<=r;i++){
if((p1<=mid) && ((p2>r) || a[p1] <= a[p2])){///當左區間有數,右區間沒數了或者左最小小於右最小,故從左區間取數,存到b臨時數組
b[i]=a[p1];
p1++;
}
else{
b[i]=a[p2];
p2++;
}
}
for(int i=l;i<=r;i++) a[i]=b[i];///將a數組統一成b
}
void erfen(int l,int r)
{
int mid=(l+r)/2;
if(l<r){
erfen(l,mid);
erfen(mid+1,r);
}
_merge(l,mid,r);///1.到這兒時,l=mid=r,然後遞歸之後三者不相等///2.l=mid=r時,就是將這個數先放進去
}
都是a爲原數組。
所以
衍生題
三、deque
deque<int> dq
push_front () :
在deque容器的開始位置插入一個新的元素,位於當前的第一個元素之前。
push_back():
在當前的最後一個元素之後 ,在deque容器的末尾添加一個新元素。
pop_front():
刪除deque容器中的第一個元素.
pop_back():
刪除deque容器中的最後一個元素.
四、二叉樹
完全二叉樹,最後一層可以少連着的幾個,但不能分開。
bitset還不會。等自學。
圖片來自學姐的PPT。
完結。