算法和数据结构入门
位运算、算法是什么、简单排序
- 位运算
- 左移 <<
- 右移 >>
- 按位取反 ~(每一位取反,0变1,1变0)
- 按位与 &(1 & 1= 1、1 & 0= 0、0 & 0= 0)
- 按位或 |(有1为1,0 | 0 为0)
- 按位异或 ^(无进位相加:1+1=0、1+0=1、0+0=0) 0^N=N 、 N^N=0
1 & 1= 1 1 & 0= 0 0 & 0= 0 1 | 1= 1 1 | 0= 1 0 | 0= 0 1 ^ 1= 0 1 ^ 0= 1 0 ^ 0= 0
- 原码:正数为本身、负数为本身+符号位1(如-1原码=1000 0001)
- 反码:正数为本身、负数为本身取反+符号位1(如-1反码=1111 1110)
- 补码:正数为本身、负数为本身取反加1+符号位1(如-1补码=1111 1111)
- 什么叫算法
- 具体问题 > 设计解决问题的处理流程 > 处理流程的可量化指标
- 算法的分类
- 明确知道怎么算的流程
- 明确知道怎么尝试的流程
- 选择排序
- 挑选最小的值位置,然后交换到最左边,重复从未排的数字中挑最小交换到左边(忽略左边已排完的数)?
- 冒泡排序
- 从首位开始两两相比、大的交换右移、重复从未排的数字中相比交换(忽略右边已排完的数)?
- 插入排序
- 从左开始排,每次把未排的数跟已排数进行比较,小的交换左移继续比较(在合适的位置插入)?
以上排序都可以使用扑克模拟或者想像老师按高矮给学生排队?(注意边界条件,如null、单身)
数组、对数器、随机行为
- 什么叫数据结构
- 数据结构是存储、组织数据的方式
- 精心选择的数据结构可以带来更高的运行或存储效率
- 数据结构是很多算法得以进行的载体
- 最基本的数据结构
- 连续结构,比如:数组
- 跳转结构,比如:链表
内存寻址相对区别:连续结构-查找快,更新慢;跳转结构-查找慢,更新快
- Math.random();
- 等概率产生double值,范围: [ 0, 1 )
- 对数器的使用
- 用来验证算法是否正确的一种方式。(采用最“老实”的方法+大量不同的参数来验证“便捷”方法的可靠性)
二分、复杂度、动态数组、哈希表、有序表
- 什么是时间复杂度
- 什么是常数操作?不受数据量影响,复杂度o(1)
- o(1)>o(logn)>o(n)>o(lognn)>o(nn)>o(nnn)>...
- 什么是动态数组
- ArrayList
- 动态数组的使用和扩容
- 哈希表和有序表的使用
- HashMap
- TreeMap
单链表
- 介绍单链表和多链表
- 单链表:只有next指针(单向车道?)
- 双链表:last+next指针(双向车道?)
- 单链表的反转
- 双链表的反转
- 用单链表结构实现队列
本文来自博客园,作者:ai狗子,转载请注明原文链接:https://www.cnblogs.com/cbfqpyq/p/15814491.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理