算法学习笔记1(算法、数据结构、算法思想)

一、算法

1、什么算法

       算法是一组可行的、确定的和有穷的规则。算法是对特定问题的求解步骤的一种精确描述方法。

2、算法的5个特征

(1)有穷性:算法的指令或者步骤的执行次数必须是有限的。

(2)确切性:算法的每个指令或步骤必须有明确的定义和描述。

(3)输入:算法应该有相应的输入条件,用来刻画运算对象的初始情况。

(4)输出:有明确的输出结果。

(5)可行性:执行步骤必须是可行的。

3、算法和公式的关系

公式是一种高度精简的计算方法,可以认为是一种算法,而算法并不一定是公式,算法的形式比公式更复杂。

4、算法和数据结构的关系

数据结构是数据的组织形式,可以用来表征特定的数据对象。

数据结构+算法+程序设计语言=程序

5、算法的表示方法:自然语言表示、流程图表示、N-S图表示、伪代码表示。

6、算法的评价标准

(1)时间复杂度:算法所需消耗的时间越短,算法越好。

(2)空间复杂度:程序的规模越小,执行过程中消耗的资源越少,程序越好。

7、新的算法思想

(1)并行计算:一个任务分多个线程同时计算,加快计算速度。

(2)遗传算法

(3)量子算法

二、数据结构

1、数据结构中的基本概念

(1)数据:信息的载体,如基本整数、字符、字符串、图像、声音等。

(2)数据元素:数据元素是数据的基本单位,也称为元素、结点、记录等。一个数据元素由多个数据项组成,数据项具有独立含义的最小标识单位,数据项也可以成为字段、属性、域。

(3)数据结构:数据的组织形式。

2、数据结构的分类:

(1)线性结构:表中的各个结点具有线性关系。如表、栈、队列和串等。

(2)非线性结构:表中的各个结点之间具有多个对应关系。数组、广义表、树结构、图结构等。

3、数据结构的存储方式:

(1)顺序存储方式:一块连续存储的区域一个接着一个地方存储数据。

如数组的存储方式。

(2)链式存储方式:不要求逻辑上相邻的结点在物理位置上相邻,结点件的逻辑关系由附加的指针字段表示。

(3)索引存储方式:采用附加的索引表的方式来存储结点信息。

(4)散列存储方式:根据结点的关键字直接计算出该结构的存储地址的一种存储方式。

4、数据类型:基本数据类型和聚合数据类型

5、数据结构:

(1)数组

(2)栈:按照后进先出的原则存储数据。

(3)队列:只允许在队的一端插入,另一端删除。

(4)链表:链式结构存储。

(5)树:一种非线性数据结构,有且仅有一个根结点。

(5)图:图是一种非线性结构,其数据结点称为顶点。

(6)堆:是一种特殊的数据结构。

(7)散列表

三、算法的基本思想

1、穷举思想

穷举思想就是从所有可能的情况中搜索正确的答案。

(1)对于一种可能的情况,计算其结果。

(2)判断结果是否满足要求,不满足则重新执行(1),满足则表示找到一个正确的答案。

2、递推思想

根据已有的数据和关系,逐步推到而得到结果。

(1)根据已知结果和关系,求解中间结果。

(2)判断是否达到要求,没有达到继续执行(1),达到要求,则表示寻找到一个正确的答案。

3、递归思想

程序中不断反复调用自身来达到一种求解问题的方法。递归调用是一个函数在它的函数体内调用它自身到的函数调用方式。

递归的优点:程序更加简洁清晰,可读性更好。

如:利用递归进行阶乘。

4、分治思想

将一个计算复杂的问题分成若干个规模较小、计算简单的小问题来进行求解,然后综合各个小问题,得到最终问题的答案。

  1. 5、概率算法思想

依照概率统计的思路来求解问题的算法,它往往不能得到问题的精确解,但在数值计算领域得到了广泛的应用。

四、算法的基本应用

1、排序算法

(1)冒泡算法:通过多次比较和交换来实现排序。因为整个过程类似于水泡浮起的过程,因此而得名。

  1. 对数组中的各个数据,依次比较相邻的两个元素的大小。
  2. 如果前面的数据大于后面的数据,则交换这两个数据。
  3. 然后按照同样的方法对剩下的数据比较。

对N个数据排序时,需要N-1步的中间排序,优点是简单直观,缺点是执行的步骤较长,效率不高。

(2)选择排序算法:

每一步选取最小值来重新排序,从而达到排序的目的。

  1. 首先从原数组中选择最小的一个数据,将其和位于第一个位置的数据交换。
  2. 接着从剩下的N-1个数据中选择次小的一个元素,将其和第2个位置的数据交换。
  3. 不断重复,直到最后两个数据交换完成。

N个数据排序时,需要N-1步的中间排序,优点是简单直观,缺点是执行的步骤较长,效率不高。

(3)插入排序法

通过比较和插入来实现排序

  1. 对数组的前两个数据进行从小到大排序
  2. 接着将第三个数据与前两个数据比较,将第三个数据插入到合适的位置
  3. 然后,将第4个数据插入到已排好序的前三个数据中
  4. 不断重复以上过程,直到把最后一个数据插入到合适的位置。

N个数据排序时,需要N-1步的中间排序

(4)shell排序

基于插值排序的思想。

(5)快速排序

基于冒泡排序

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章