《啊哈算法》读书笔记

  1. 桶排序,需要的数组要比总的元素多1.
  2. 冒泡排序的基本思想是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。
  3. 冒泡排序的原理是:每一趟只能确定将一个数归位。即第一趟只能确定将末位上的数归位。如果有n个数进行排序,只需将n-1个数归位。
  4. for(i=1; i<=n-1; i++){for(j=1; j<=n-i; j++)}
  5. 冒泡排序的时间复杂度是O(N平方)。
  6. 快速排序每次排序的时候设置一个基准点,将小于等于基准点的数全部放到基准点的左边,将大于等于基准点的数全部放到基准点的右边。
  7. 快速排序的最差时间复杂度是O(N平方),它的平均时间复杂度为O(NlogN)。
  8. 队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作,这称为"出队",而在队列的尾部(tail)进行插入操作,这称为"入队"。当队列中没有元素时(即head==tail),称为空队列。
  9. 遍历就是指把图的每一个顶点都访问一次。
  10. 深度优先遍历的主要思想就是:首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继续试探访问别的顶点,直到虽有的顶点都被访问过。深度优先遍历是沿着图的某一条分支遍历直到末端,然后回溯,再沿着另一条进行同样的遍历,直到所有的顶点都被访问过为止。
  11. 广度优先遍历的主要思想就是:首先以一个未被访问过的顶点作为起始顶点,访问其所有相邻的顶点,然后对每个相邻的顶点,再访问它们相邻的未被访问过的顶点,直到所有顶点都被访问过,遍历结束。
  12. 图就是有N个顶点和M条边组成的集合。
  13. 树是指任意两个节点间有且只有一条路径的无向图。
  14. 二叉树的特点是每个节点最多有两个儿子。
  15. 父节点比子节点小,这样的二叉树称为最小堆。 如果所有父节点都比子节点大,则称为最大堆。
  16. 创建堆的算法:把n个元素建立一个堆,首先可以将这n个节点以自顶向下、从左到右的方式从1到n编码。这样可以把这n个节点转换成为一颗完全二叉树。紧接着从最后一个非叶节点(节点编号为n/2)开始到根节点(节点编号为1),诸葛扫描所有的节点,根据需要将当前节点向下调整。直到当前节点为根节点的子树符合堆的特性。
  17. 堆排序的思想:先建立最小堆,然后每次删除顶部元素并将顶部元素输出或者放入一个新的数组中,直到堆为空为止。最终的输出或者存放在新数组中的数就已经是排序好的。

你可能感兴趣的:(《啊哈算法》读书笔记)