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

相关文章
相关标签/搜索