《计算机科学概论》第13版#5章--算法

128 阅读3分钟

算法

主要讲了什么是算法,算法如何表示,如何衡量算法的优劣,常见的几种搜索和排序算法的原理。

章节目录

  1. 算法概念
  2. 算法的衡量
  3. 常见的查找和排序算法

算法概念

定义:算法是定义一个可终止过程的一组无歧义的、可执行的步骤的有序集合。

程序是算法的表示,而进程又是执行算法的活动。

算法的衡量

时间复杂度

// 时间复杂度定性的描述了算法执行完毕所需的步数

空间复杂度

// 空间复杂度定性的描述了该算法执行过程中需要占用的内存大小

常见的查找和排序算法

插入排序

//描述: 插入排序就是从第二个元素开始,把这个元素取出来,用一个临时变量保存,第二个元素的位置就成了一个空隙,然后拿第二个元素前面(从右到左)的元素,依次与临时变量比较,遇见比临时变量大的元素,将元素与空隙交换位置,直到找到一个元素比临时变量小或者空隙移到第一个位置,将临时变量插入空隙中。这样就能保证前两个元素顺序已经排好,接下来取第三个元素到临时变量中,重复上述过程,保证前三个元素已经排好序,再取第四个元素重复,保证第四个元素已经排序,一直到最后一个元素也重复完上述过程,整个数组就排序好了。

快速排序

// 描述--快速排序用到了递归算法。

快速排序首先是任意找一个元素作为轴,先把轴移到正确的位置,那么对

轴两边的子数组也任意找一个元素作为轴,把轴移到正确的位置,再重复上述过程,

直到子数组的长度为 0 或 1就到达了基准情况。

//

如何将一个轴移到正确的位置?

选择一个轴后,左指针和右指针分别指向除轴外的数组的最左边和最右边

(1) 左指针逐个格子向右移动,当遇到大于或等于轴的值时,就停下来。

(2) 右指针逐个格子向左移动,当遇到小于或等于轴的值时,就停下来。

(3) 将两指针所指的值交换位置。

(4) 重复上述步骤,直至两指针重合,或左指针移到右指针的右边。

(5) 将轴与左指针所指的值交换位置。

二分搜索

//描述:

首先将数组按照从小到大(或从大到小)排序好;

第一步取数组的中间值和 target 比较,如果中间值大于 target,那么抛弃数组中间值右边的部分;

取剩余数组的中间值和 target 进行比较,如果中间值小于 target 那么抛弃中间值左边的部分;

再取剩余数组的中间值进行比较,这样一次取下去就知道了 target 是否在原数组中。