---
# System prepended metadata

title: Algorithms

---

# Algorithms
```
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <list>
#include <vector>
bool even(int n)
{
    return ((n % 2) == 0);
}

struct lex {
    int num;
    char name[10];
} s[26], s2[26];

int cmp(lex a, lex b)
{
    return strcmp(a.name, b.name) > 0;
}
int cmp2(lex a, lex b)
{
    return a.num>b.num ? 1 : 0;
}
void findif(); //find_if
void COPY();   //copy
void SWAP();   //swap
void repl();   //replace
void FILL();   //fill
void SORT();   //sort
void stab();   //stable_sort
void low();	   //lower_bound
void up();	   //upper_bound
void bin();	   //binary_search
void MIN();    //min()
void MAX();    //max()
using namespace std;

int main()
{
    cout << "find_if=";
    findif();
    cout << "=========================" << endl << "copy=";
    COPY();
    cout << "=========================" << endl << "swap=";
    SWAP();
    cout << "=========================" << endl << "replace=";
    repl();
    cout << "=========================" << endl << "fill=";
    FILL();
    cout << "=========================" << endl << "sort=";
    SORT();
    cout << "=========================" << endl << "stable_sort=";
    stab();
    cout << "=========================" << endl << "lower_bound=";
    low();
    cout << "=========================" << endl << "upper_bound=";
    up();
    cout << "=========================" << endl << "binary_search=";
    bin();
    cout << "=========================" << endl << "min=";
    MIN();
    cout << "=========================" << endl << "max=";
    MAX();
    return 0;
}

void findif()
{
    vector<int> v = {1, 2, 3, 4, 5};
    auto it = find_if(v.begin(), v.end(), even);

    if (it != end(v))
        cout << "偶數=" << *it << endl;
}

void COPY()
{
    int a[3] = {1, 2, 3};

    int b[3];
    copy(a, a + 3, b);
    for(int j = 0; j < 3; j++)
        cout << b[j] << endl;
}

void SWAP()
{
    int a = 999, b = 111;
    swap(a, b);
    cout << "a=" << a << " b=" << b << endl;
}

void repl()
{
    string a = "C++";
    a.replace(1, 2, "#");
    cout << a << endl;
}

void FILL()
{
    int a[5];
    fill(a, a + 5, 9);

    for(int i = 0; i < 5; i++)
        cout << a[i] << endl;
}

void SORT()
{
    int i;
    for(i = 65; i < 87; i++) {
        s[i - 65].name[0] = (char)i;
        s[i - 65].num = i - 65;
    }
    s[22].name[0] = 'a';
    s[23].name[0] = 'a';
    s[24].name[0] = 'a';
    s[25].name[0] = 'a';

    sort(s, s + 26, cmp);
    for(i = 0; i < 26; i++) {
        cout << s[i].name << "   " << s[i].num << endl;
    }
    cout << "第二次" << endl;
    sort(s, s + 26, cmp2);
    for(i = 0; i < 26; i++) {
        cout << s[i].name << "   " << s[i].num << endl;
    }

}

void stab()
{
    int i;
    for(i = 65; i < 87; i++) {
        s2[i - 65].name[0] = (char)i;
        s2[i - 65].num = i - 65;
    }
    s2[22].name[0] = 'a';
    s2[23].name[0] = 'a';
    s2[24].name[0] = 'a';
    s2[25].name[0] = 'a';

    stable_sort(s2, s2 + 26, cmp);
    for(i = 0; i < 26; i++) {
        cout << s2[i].name << "   " << s2[i].num << endl;
    }
    cout << "第二次" << endl;
    stable_sort(s2, s2 + 26, cmp2);
    for(i = 0; i < 26; i++) {
        cout << s2[i].name << "   " << s2[i].num << endl;
    }
}

void low()
{
    int a[5] = {100, 25, 56, 13, 59};
    sort(a, a + 5);
    cout << (lower_bound(a, a + 5, 50) - a) << endl;
}

void up()
{
    int a[5] = {100, 25, 56, 13, 59};
    sort(a, a + 5);
    cout << (lower_bound(a, a + 5, 50) - a) << endl;
}

void bin()
{
    int a[5] = {2189, 34, 93, 238, 365};
	sort(a,a+5);
    if(binary_search(a, a + 5, 93))
        cout << "有93" << endl;
    else
        cout << "沒有93" << endl;
}

void MIN()
{
    int a = 10, b = 20;
    cout << min(a, b) << endl;
}

void MAX()
{
    int a = 10, b = 20;
    cout << max(a, b) << endl;
}
```