C++算法模板集合

個人經常使用刷題網站:http://218.5.5.242:9018/JudgeOnline/html

         https://www.luogu.com.cn/算法

排序

選擇排序(selection sort)ide

1 void selection(int n,int* a){
2     for (int i = 0;i < n;i++){
3         for (int j = i + 1;j < n;j++){
4             if (a[i] > a[j]){
5                 swap(a[i],a[j]);
6             }
7         }
8     }
9 }
選擇排序

冒泡排序(bubble sort)網站

void bubble(int n,int* a){
    for (int i = 0;i < n;i++){
        for (int j = 0;j < n - 1;j++){
            if (a[j] > a[j + 1]){
                swap(a[j],a[j+1]);
            }
        }
    }
}
冒泡排序

 

查找

枚舉查找spa

bool search(int n,int* a,int x){
    for (int i = 0;i < n;i++){
        if (a[i] == x){
            return true;
        }
    }
    return false;
}
枚舉查找

二分查找(binary search)code

bool binary_search(int n,int* a,int x){
    int mid,r,l;
    r = 0;
    l = n - 1;
    while (r < l){
        mid = (r + l) / 2;
        if (x == mid) return true;
        if (x > mid) l = mid;
        if (x < mid) r = mid;
    }
    return false;
}
二分查找

 

搜索

深度優先搜索(DFS)求連通塊htm

void dfs(int x,int y,int id){        // id是連通塊記號 
    if (是否越界) return;
    if (搜索過或不是指定符號) return;
    標記已搜索; 
    搜索下一步; 
}
DFS求連通塊

這只是一個歸納,詳細代碼樣例參見C++算法代碼——細胞問題blog

 

數學專題

判斷質數排序

1 bool prime(int n){
2     for (int i = 2;i <= sqrt(n);i++){
3         if (n % i == 0) return false;
4     }
5     return true;
6 }
判斷質數

 

 for循環宏定義

1 #define _for_1(i,a,b) for(i = (a);i <= (b);i++)
2 #define _for_2(i,a,b) for(i = (a);i >= (b);i--)
3 
4 // 能夠這樣應用:_for_1(i,1,n)
for循環宏

 

g++運行

>g++ 文件名.cpp -o 文件名
>./文件名
g++

 

代碼做者親測,做者將持續更新……get

相關文章
相關標籤/搜索