5.18 第二次課直播總結

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。
完結。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章