我的常用刷题网站:http://218.5.5.242:9018/JudgeOnline/

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

排序

选择排序(selection sort)

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]);
            }
        }
    }
}

冒泡排序

 

查找

枚举查找

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)

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)求连通块

void dfs(int x,int y,int id){        // id是连通块记号 
    if (是否越界) return;
    if (搜索过或不是指定符号) return;
    标记已搜索; 
    搜索下一步; 
}

DFS求连通块

这只是一个概括,详细代码样例参见C++算法代码——细胞问题

 

数学专题

判断质数

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++

 

代码作者亲测,作者将持续更新……

版权声明:本文为linyiweiblog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/linyiweiblog/p/14422119.html