zoukankan      html  css  js  c++  java
  • Algorithm常用函数(2)

    9. 包括——includes

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 
     5 //includes
     6 #include<algorithm>
     7 #include<numeric>
     8 
     9 using namespace std;
    10 
    11 int main()
    12 {
    13     int all[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    14     int all2[4] = {4, 5, 8};
    15 
    16     bool y = includes(all, all + 10, all2 , all2 + 3);//判断all的前10个数中是否包含all2的三个数
    17 
    18     if(y)
    19         printf_s("yes");
    20     else
    21         printf_s("no");
    22 
    23     return 0;
    24 }

    10.  最低边界——lower_bound

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 
     5 //lower_bound
     6 #include<algorithm>
     7 #include<numeric>
     8 
     9 using namespace std;
    10 
    11 int main()
    12 {
    13     int all[11] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
    14     int nee = 9;
    15 
    16     int *a = lower_bound(all, all + 10, nee);//找出nee可在序列all插入的第一个位置
    17     printf("%d", a - all);
    18 
    19     return 0;
    20 }

    11. 最大最小值——max, max_element, min, min_element

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 
     5 //max, max_element, min, min_element
     6 #include<algorithm>
     7 #include<numeric>
     8 using namespace std;
     9 
    10 int main()
    11 {
    12     //printf_s("%d", max('a', 'b'));
    13     //printf_s("%d", min('a', 'b'));
    14 
    15     int all[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    16     //int *max = max_element(all, all + 11);
    17     //printf_s("%d", *max);
    18     int *min = min_element(all, all + 11);
    19     printf_s("%d", *min);
    20 
    21     return 0;
    22 }

    12. 合并——merge

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 
     5     //merge
     6 #include<algorithm>
     7 #include<numeric>
     8 
     9     using namespace std;
    10 
    11 int main()
    12 {
    13     int all[11]={0,1,2,3,4,5,6,7,8,10};
    14     int all2[11]={0,2,6,11,13};
    15     int all3[20];
    16 
    17     int *a = merge(all, all + 10, all2, all2 + 5, all3);//合并all的前10个元素以及all2的5个元素到all3中,注意自动进行了排序
    18     int len = a - all3;
    19     for(int i = 0 ; i < len ; i ++)
    20         printf_s("%d	", all3[i]);
    21 
    22     return 0;
    23 }

    13. 排列—— next_permutation

     1 #include<iostream>
     2 #include<algorithm>
     3 using namespace std;
     4 
     5 int main()
     6 {
     7     int myints[] = {1, 2, 3, 4};
     8     cout << "The 3! possible permutations with 3 elements:
    ";
     9 
    10     sort(myints, myints + 4);
    11     do {
    12         cout<<myints[0]<<" "<<myints[1]<<" "<<myints[2]<<" "<<myints[3]<<endl;
    13     }while(next_permutation(myints, myints + 4));//排列
    14 
    15     return 0;
    16 }

    15. 部分排序——partial_sort

    #include<iostream>
    #include<algorithm>
    using namespace std;
    
    int main()
    {
        int all[11] = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
    
        partial_sort(all, all + 4 , all + 11);//1       2       3       4       11      10      9       8       7       6       5 
    
        for(int i = 0 ; i < 11 ; i ++)
            printf("%d	", all[i]);
    
        return 0;
    } 

    16. 快速排序——sort,qsort

     1 //////=========First Sort——qsort===============////
     2 ///int
     3 int num[100];
     4 int cmp(const void *a, const void *b)
     5 {
     6     return *(int *)a - *(int *)b;
     7 }
     8 qsort(num, 100, sizeof(num[0]), cmp);
     9 
    10 ///char
    11 char word[100];
    12 int cmp(const void *a, const void *b)
    13 {
    14     return *(char *)a - *(char *)b;
    15 }
    16 qsort(word, 100, sizeof(word[0]), cmp);
    17 
    18 //double
    19 couble in[100];
    20 int cmp(const void *a, const void *b)
    21 {
    22     return *(double *)a > *(double *)b ? 1 : -1;
    23 }
    24 qsort(word, 100, sizeof(word[0]), cmp);
    25 
    26 //struct
    27 struct In
    28 {
    29     double data;
    30     int other;
    31 }s[100];
    32 
    33 int cmp(const void *a, const void *b)
    34 {
    35     return (*(In *)a).data > (*(In *)b).data ? 1 : -1;
    36 }
    37 qsort(s, 100, sizeof(s[0]), cmp);
    38 
    39 //string
    40 char str[100][100];
    41 int cmp(const void *a, const void *b)
    42 {
    43     return strcmp((char *)a, (char *)b);
    44 }
    45 qsort(str, n , sizoof(str[0]), cmp); //n是要排序的字符串的个数
    46 
    47 //////=========Second Sort——sort===============////
    48 #include<iostream>
    49 #include<algorithm>
    50 using namespace std;
    51 
    52 int main()
    53 {
    54     int a[20];
    55     for(int i = 0 ; i < 20 ; i ++)
    56         cin>>a[i];
    57 
    58     sort(a, a + 20);
    59     for(int i = 0 ; i < 20 ; i ++)
    60         cout<<a[i]<<endl;
    61 
    62     return 0;
    63 }
    64 //////=========Third——qsort与sort的区别===============////
    65 sort 是 qsort 的升级版,如果能用 sort 尽量用 sort,使用也比较简单,不像 qsort 还得自己去写  cmp  函数,只要注明  使用的库函数就可以使用,参数只有两个(如果是普通用法)头指针和尾指针;默认 sort 排序后是升序,如果想让他降序排列,可以使用自己编的 cmp 函数:
    66 bool compare(int a, int b)
    67 {
    68     return a > b;
    69 }
    70 sort(*a, *b, cmp);

    17. 堆排序—— sort_heap

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<vector>
     4 using namespace std;
     5 
     6 int main()
     7 {
     8     int myints[] = {10, 20, 30, 5, 15};
     9     vector<int> v(myints, myints + 5);
    10     vector<int>::iterator it;
    11 
    12     make_heap(v.begin(), v.end());//已经调整了堆
    13     cout<<"Initial max heap :"<<v.front()<<endl;
    14 
    15     pop_heap(v.begin(), v.end());
    16     v.pop_back();
    17     cout<<"Max heap after pop: "<<v.front()<<endl;
    18 
    19     v.push_back(99);
    20     push_heap(v.begin(), v.end());
    21     cout<<"Max heap after push: "<<v.front() <<endl;
    22 
    23     sort_heap(v.begin(), v.end());
    24 
    25     cout<<"Final sorted range: ";
    26     for(int i = 0 ; i < v.size() ; i ++)
    27         cout<<" "<<v[i];
    28 
    29     cout<<endl;
    30 
    31     return 0;
    32 }
  • 相关阅读:
    Linux基本命令-chmod
    Linux操作系统启动流程
    博客园背景美化
    Windows安装python3.x后,pip list警告!DEPRECATION: The default format will switch to columns in the future.
    Python2.7更新pip:UnicodeDecodeError: 'ascii' codec can't decode byte 0xb7 in position 7: ordinal not in range(128)
    .Net程序员学用Oracle系列(23):视图理论、物化视图
    .Net程序员学用Oracle系列(22):分析函数(OVER)
    .Net程序员学用Oracle系列(21):分组查询(GROUP BY)
    .Net程序员学用Oracle系列(20):层次查询(CONNECT BY)
    .Net程序员学用Oracle系列(19):导出、导入(备份、还原)
  • 原文地址:https://www.cnblogs.com/yiyi-xuechen/p/3452292.html
Copyright © 2011-2022 走看看