1. 为什么要学数据结构和算法?

1.数据结构与算法
2.5大线性数据结构对比,源码解读
3.3类排序算法对比,理解排序
4.2类查找算法对比,理解查找


程序=数据结构+算法
数据结构是一个容器,用来存放数据,好的容器事半功倍,不同的数据结构有不同的特点,为了完成数据的存储和管理

算法就是为了如何去管理数据,如何去操作数据,更高效的查询

查询本质是找最短路径

大厂面试的必备内容
方便理解设计思想
写代码性能保障
锻炼思维逻辑,增加内功

2. 怎么学?
理解--写一遍--思考总结
不需要创造数据结构,理解,使用好数据结构

3.有哪些数据结构:
3.1 数组:array: 类型相同的连续存放容器,节约空间,查找块,增删满
多维数组:int[,] a=new [3,4]{{1,2,3,4},{5,6,7,8},{9,10,11,12}}
锯齿数组:int[2,3]

3.2 arrayList:动态数组,边长,里面的元素是object,有装箱,拆箱, ,默认长度为4,超过长度length *2 翻倍长度
trimToSize() 收缩空间,把开辟的多余的收缩掉,查找块,增删慢
runtime-main 源码

3.3 泛型list<string>:也是array,和arrayList基本一样,类型确定,不需要装箱拆箱,性能比arrayList好

3.4 sortedList,sortedList<int,str>,LinkedList<model>

3.5 堆stack(FILO),实际上是数组
stack<T>:先进后出,方便实现算法:回文 abba,abccba

3.6 队列queue:本质是数组,fifo

3.7 优先级队列:priorityQueue c#10新增的
权重队列:有性能损失

不同的数据结构,满足不同的需求

基类库BCL:https://github.com/dotnet/runtime 0415version

二,算法
10 大排查算法:冒泡,选择,插入排序
1. 冒泡算法:两两交换,比较,依次和后面的比较,直到大的靠右
选择排序:从第一个开始和后面的所有比较,将最小的放在第1个,依次循环,移动少,速度快
插入排序:从左开始,从小到大插入值

选择 》 冒泡 > 插入 的效率

2.查找算法:
顺序查找:forearch, 最大值,最小值
二叉查找:先排序在查询,判断索引(length-1 + i )/2的值和查找的值的是否相等,能提升性能

3. 自组织查找算法: 热数据:将每次查找的数据向前移动一位(除第1位),二 八原则:将每次查找的数据向前移动一位(除前面的20%不移动,后面的80%移动)


二叉查找:
public static int show(int[] arr,int value)
{
int right=arr.lenght -1;
int left=0;
int middle;
while(left < right)
{
middle =(left + right)/2;
if(arr[middle]==value)
{
return middle;
}
else if (value <arr[middle])
{
right =middle -1;
}
else{
left=middle +1;
}
}

return -1;
}

递归二叉查找:性能不好,空间乱费

public static int bshow(this int[] arr,int value,int left,int right)
{
if(left >right)
{
return -1;
}
int middle=(int)(right+left)/2;
if(value < arr[middle])
{
return arr.bshow(value,left,middle -1);
}
else if(value ==arr[middle])
{
return middle;
}
else
{
return arr.bshow(value,middle+1,right);
}
}

屏幕录像专家2020


1.各种链表结构学习,对比数组差异
2.各种二叉树结构,理解线性存储,非线性存储
3.hash存储 存取都快,是如何实现的
4.数据结构总结,从内存角度理解数据结构


链表:linkedList,数据随机存放,不是连续存放,增加删除简单,访问慢
线性结构分:数组和链表(栈和队列),元素的前后只有一个元素
非线性结构:元素的前后可能有多个,多维数组,树,图

标签智能推荐:

精通 ASP.NET Core MVC (第 7 版) 源码下载

将使用的.NET版本更新到5.0版本。GitHub地址:https://github.com/haoguanjun/pro-asp.net-core-mvc-2

ASP.NET Core基于Socket实现消息推送实战演练

于ASP.NET&nbsp;Core中如何实现消息推送,我们已经学过了《ASP.NET&nbsp;Core基于SignalR实现消息推送实战演练》、《ASP.NET&nbsp;Core基于WebSocket实现消息推送实战演练》,《ASP.NET&nbsp;Core基于SuperWebSocket实现消息推送实战演练》今天我们要学习的是如何通过微软原生的System.Net.Sockets来实现消

如何在K8s中调式.net core

o-debug-asp-net-core-in-kubernetes-from-visual-studio-2019-1e9d16099d99https://www.okteto.com/blog/how-to-develop-aspnetcore-apps-in-kubernetes/https://developers.redhat.com/articles/2022/01/07/debug-

.NET 6 Preview 功能预览

-core-6-0-preview-4.NET6Preview3微软官方文档:https://devblogs.microsoft.com/dotnet/announcing-net-6-preview-3参考博客:.NET6Preview3中的ASP.NETCore更新微软官方博客:https://devblogs.microsoft.com/aspnet/asp-net-core-update

ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用

依赖注入(DI)ASP.NETCore默认集成了DI。所有官方模块的引入都要使用DI的方式引入。https://baike.baidu.com/item/IOCvscode-solution-explorer创建、删除、重命名或移动解决方案、解决方案文件夹和项目。管理项目引用。VSCode扩展管理页直接搜索扩展名安装即可,本次安装的版本是:0.2.33https://github.com/ken-

备忘录:VS中使用Git报错

it-core/git-askpass.exe:NosuchfileordirectorycouldnotreadUsernamefor'https://github.com':terminalpromptsdisabledPushingtohttps://github.com/shanzm/ASP.NET-Core.git2.解决方案修改仓库的.git文件夹中的config文件,将文件中的:ur

ASP.NET Core 入门教程 5、ASP.NET Core MVC 视图传值入门

@model&nbsp;语法指定对应的类型,这样我们可以在视图文件(.cshtml)中使用Model关键字来使用传输到视图的该类型的实例。https://github.com/ken-io/asp.net-core-tutorial/tree/master/chapter-05本文参考https://docs.microsoft.com/zh-cn/aspnet/core/mvc/views/ov

asp.net Core依赖注入汇总

icrosoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0最佳实践https://www.cnblogs.com/runningsmallguo/p/10234307.html全面理解https://www.cnblogs.com/jesse2013/p/di-in-aspnetcore.

Microsoft Build 2021大会开始后,Develop Blog一系列更新

uncing-net-6-preview-4/发布.NETMAUI预览版4https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-4/介绍运行时.NET热重载时编辑代码的体验https://devblogs.microsoft.com/dotnet/introducing-net-hot-reload/宣布EntityFr

linux Ubuntu Centos 增加 TCP 连接数

查看maxconn:cat/proc/sys/net/core/somaxconn修改maxconn:sysctl-wnet.core.somaxconn=32768