数据结构知识点总结_算法与数据结构必考知识点总结

c4a37043697daba625057a5b0f0a7bed.png

目录:

  1. 排序算法
  • 冒泡排序
  • 快速排序
  • 归并排序
  • 直接插入排序
  • 希尔排序
  • 选择排序
  • 堆排序

2.查找算法

  • 二分查找

3.二叉树的前序、中序、后序、层次遍历

4.如何写构造函数,拷贝构造,拷贝赋值,操作符重载?

5.如何写singleton设计模式?

6.TopK?

7.动态规划

1.1、冒泡排序

void 

1.2、快速排序

基本思路:

  • 任取一个中心元素(如第一个)
  • 所有比它小的元素放在前面,比它大的元素放在后面,形成左右两个子表
  • 对各个子表重新选择中心元素并依次按照规则调整(递归思想)
  • 直到每个子表的元素只剩一个
int 

复杂度分析:

在程序中使用递归,需要递归调用栈的支持,而栈的长度取决与递归调用的深度。

平均情况下,需要O(logN)的栈空间,最坏O(N)。不稳定排序。时间复杂度平均O(nlogN),最坏O(

)。

1.3、归并排序

void 

复杂度分析:

时间复杂度:O(nlogn);空间复杂度:O(n);稳定排序

1.4、直接插入排序

思路:

0314565aafe7fabb9406a6323f1f49dc.png
直接插入排序流程
void 

1.5、希尔排序

基本思路:先将整个待排序的序列分割成若干个子序列,分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。

void 

1.6、选择排序

基本思路:

6f47d411f242e6e4320c3d9397664eff.png
简单选择排序思路
void 

2.1、二分查找

递归实现:

int 

非递归实现:

int 

3、二叉树的前序、中序、后序、层次遍历

递归和非递归实现

https://blog.csdn.net/invisible_sky/article/details/80816797​blog.csdn.net

4、如何写拷贝构造,拷贝赋值,操作符重载?

以string为例。

MyString

拷贝构造函数

MyString

拷贝赋值函数,注意:返回值的类型声明为该类型的引用,为了连续赋值。

MyString

5、如何写singleton设计模式?

/*

6.TopK实现?

#include 

7.动态规划

7.1 是否包含和为s的子数组?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值