程序=算法+数据结构

JAVA 数据结构 及 基础算法

算法:解决问题的流程/步骤(分支、循环、顺序)

数据结构:将数据按照某种特定的结构来保存

设计良好的数据结构会导致好的算法

凭借一句话获得图灵奖的Pascal之父——Nickcklaus Wirth让他获得图灵奖的这句话就是他提出的著名公式:

算法+数据结构=程序”。

这个公式对计算机科学的影响程度足以类似物理学中爱因斯坦的“E=M^2”——一个公式展示出了程序的本质。

通俗的说算法相当于相当于逻辑,小部分已为人们发掘出来(这里的小部分指的是书本里讲的各种算法,属于人们对于特定模式抽象出来的核心,比如排序),可以看做一种模式。对应于业务来说,一种逻辑(可能由其他元子逻辑组合而成)一旦确定下来,便可看做常量,固定不变。

数据结构即数据表示,说白了就是数据,比如用户数据,属于互联网玩的主要部分。这里面有一个问题,就是如何合理高效表示数据。为此,人们想出了各种各样的数据结构,比如数组,比如树。还有一点就是代码通用性的考量。对于一个设计良好的数据(结构)来讲,应当可以保证在代码逻辑不变的基础上,功能的增加只需在数据层动点手脚完成:下拉菜单数据中追加一条“详情页”的数据和对应的回调方法,即可完成新菜单项的添加工作。

问题——>数据结构+算法==程序——>解决问题

“算法”->逻辑

“数据结构”->存储

一 、数据结构:逻辑结构、运算结构、存储结构

1 、逻辑结构

分为:线性结构、非线性结构

线性结构 :一维数组、栈、线性表、队列、双队列、串

非线性结构

分为:多维数组、集合、树、图、散列表

2 、运算结构

分为:分支结构、循环结构

分支结构:

if、switch、三目运算符

循环结构:

for、while、do...while、

3 、存储结构

堆栈(先进后出)、队列(先进后出)、数组(随机查询)、链表(增删很简单)

①ArrayList集合

本质是一种可以扩容的数组,增删慢,查询快。数组就是随机存储。

②LinKedList集合

本质是一个链表,增删快,查询慢。

在使用LinKedList集合时,最好使用LinKedList创建对象,不要用多态,因为多态无法使用LinKedLiast的特有功能。

二 、基础算法

八大排序算法:

①直接插入排序

②希尔排序

③堆排序

④冒泡排序

⑤快速排序

⑥归并排序

⑦基数排序

⑧选择排序

及 递归算法

你可能感兴趣的:(数据结构,算法,java)