AlgarithmLearning_Day1.2 (《算法笔记》第四章 入门篇(2)算法初步)

震惊,整本书的学习竟然不是从开头开始,这就算了,竟然不从书中的内容开始!

今天我复习了一下以前学过的,学习了一下以前没学过的排序,不过排序种类实在是太多了,我没时间看完,就总结了一些在Day1,这才是真正开始学习的章节。

  • 4.1 排序
    4.1.1 选择排序: 选到最大或最小元素和边缘值进行交换,作用范围随算法推进缩小,直到边缘靠近单个元素,算法结束。
    4.1.2 插入排序: 最简单的算法,将一个元素选择为有序元素,剩下一个一个插入有序元素左右,插入后的元素为有序元素,未插入的元素为无序元素。插入到有序元素组的时候要注意保持有序。无序数组中元素个数变为0结束算法。
    4.1.3 排序题与sort函数的应用:相关结构体的定义、cmp函数的编写、实现排名

  • 4.2 散列(hash)
    4.2.1 散列的定义与整数散列:“将元素通过一个函数转换为整数,使得该整数可以尽量唯一地代表这个元素”。是不是有映射那味儿了?其中转换函数被称为 散列函数H,若元素在转换前位key,那么转换后就是一个整数H(key)。
    1、线性探查法(Linear Probing)
    2、平方探查法(Quardratic Probing)
    3、链地址法(拉链法)
    jump to 6.4 map常用用法详解
    map可以将任何基本类型(包括STL容器)映射到任何基本类型(包括STL容器),也就是说我们也可以建立string型到int型的映射。
    所在头文件: #include 需求: using namespace std;
    ① map’s definition
    map<typename1, typename2>mp;
    其中两个类型分别对应键和键值的类型。若将int映射到int型,就相当于是普通的int型数组。
    而如果是字符串到整型的映射的话,必须使用string,而不能使用char数组。
    map<string, int> mp;
    这是因为char数组作为数组,是不能被称为键值的。如果想用字符串做映射,必须用string。
    前面也说到,map键和值也可以是STL容器,例如可以将一个set容器映射到一个字符串:map<set<int>, sring> mp;
    ② map容器内元素的访问
    map一般有两种访问方式:通过下标访问或通过迭代器访问。下面分别讨论这两种访问方式。
    (1)通过下标访问 mp['c']即c的映射
    (2)通过迭代器访问 map<typename1, typename2>::iterator it;
    ③ map常用函数: find(), erase(), size(), clear()
    ④ map的用途
    (1)需要建立字符(或字符串)与整数之间映射的题目,使用map可以减少代码量
    (2)判断大整数或者其他类型数据是否存在的题目,可以把map当bool数组来用
    (3)字符串和字符串的映射也有可能遇到
    延伸:map的键和值是唯一的,而如果遇到一个键需要对应多个值,就只能用“multimap” 。另外,C++11标准中还增加了 unordered_map,以散列电梯map内部的红黑树实现,使其可以用来处理只映射而不按key排序的需求,速度比map快很多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值