• cb16a_c++_顺序容器的选用_排序_二分查找


    /*cb16a_c++_顺序容器的选用_排序_二分查找
    顺序容器:
    1.vector的优点与缺点
    vector优点:排序利用下标,快速排序,做二分查找非常快
    2.list的优点与缺点
    list优点:插入,删除速度快。vector插入,删除速度慢。
    list缺点:排序慢
    3.deque的优点与缺点
    优点:快速排序,双端操作。
    缺点:比vector操作慢一点点
    插入操作如何影响容器的选择---list
    元素的访问如何影响容器的选择---vector
    选择容器的提示---不知道选择哪个,就vector. 因为vector可以转list或者deque

    参考:

    https://www.cnblogs.com/txwtech/p/12317531.html
    vector sort算法排序。。。
    vector 排序后,做二分查找非常快
    if (binary_search(v.begin(), v.end(),70))//二分查找,找70.
    {
    cout << "找到了" << endl;
    }
    //链表排序后,没有下标,不能随机操作,不能用二分查找。只能线程查找
    */

     1 /*cb16a_c++_顺序容器的选用_排序_二分查找
     2 顺序容器:
     3  1.vector的优点与缺点
     4  vector优点:排序利用下标,快速排序,做二分查找非常快
     5  2.list的优点与缺点
     6  list优点:插入,删除速度快。vector插入,删除速度慢。
     7  list缺点:排序慢
     8  3.deque的优点与缺点
     9  优点:快速排序,双端操作。
    10  缺点:比vector操作慢一点点
    11 插入操作如何影响容器的选择---list
    12 元素的访问如何影响容器的选择---vector
    13 选择容器的提示---不知道选择哪个,就vector. 因为vector可以转list或者deque
    14  vector sort算法排序。。。
    15 vector 排序后,做二分查找非常快
    16 if (binary_search(v.begin(), v.end(),70))//二分查找,找70.
    17     {
    18         cout << "找到了" << endl;
    19     }
    20 //链表排序后,没有下标,不能随机操作,不能用二分查找。只能线程查找
    21 */
    22 
    23 #include <iostream>
    24 #include <list>
    25 #include <vector>
    26 #include <deque>
    27 #include <algorithm>
    28 
    29 using namespace std;
    30 
    31 int main()
    32 {
    33     vector<int> v;
    34     list<int> l;
    35     deque<int> d;
    36     d.push_back(50);
    37     d.push_front(10);//双端操作
    38 
    39 
    40     v.push_back(10);
    41     v.push_back(90);
    42     v.push_back(50);
    43     vector<int>::iterator vi = v.begin();
    44     ++vi;
    45     ++vi;
    46     v.insert(vi, 70);//插入在vi迭代器前,70
    47     vi = v.begin();
    48     ++vi;
    49     v.erase(vi);//删除后,后面的数据向前移动
    50     sort(v.begin(),v.end());//排序后,做二分查找非常快
    51     //二分查找
    52     if (binary_search(v.begin(), v.end(),70))//二分查找,找70.
    53     {
    54         cout << "找到了" << endl;
    55     }
    56     else
    57     {
    58         cout << "没找到" << endl;
    59     }
    60 
    61 
    62     l.push_back(10);//list插入速度快
    63     l.push_back(90);
    64     l.push_back(50);
    65     list<int>::iterator li = l.begin();
    66     ++li;
    67     ++li;
    68     l.insert(li,20);//list插入速度快,动态创建节点,指针前后连接。
    69     li = l.begin();
    70     ++li;
    71     l.erase(li);//删除速度快。删除后,直接前后指针相连接
    72     l.sort();
    73     if (binary_search(l.begin(), l.end(), 50))//链表没有下标,不能随机操作,不能用二分查找。只能线程查找
    74     {
    75         cout << "找到了" << endl;
    76     }
    77     else
    78     {
    79         cout << "没找到" << endl;
    80     }
    81 
    82 
    83 
    84     return 0;
    85 }
    欢迎讨论,相互学习。 txwtech@163.com
  • 相关阅读:
    MongoDB解析 2XML配置文件
    MongoDB解析 1理论基础
    JAVA GoF设计模式6大设计原则
    Kafka解析1快速入门
    JAVA GoF设计模式 1创建型设计模式
    B/S架构与C/S架构的区别
    【笔记】Oracle使用笔记
    如何通过WinDbg获取方法参数值
    Windows 启动过程
    ubuntu安装leveldb
  • 原文地址:https://www.cnblogs.com/txwtech/p/12321348.html
Copyright © 2020-2023  润新知