第一章:算法绪论

课程目标:

如何判断哪个算法更高效:需分析比较算法运行效率

如何设计正确高效的算法:需掌握算法设计的方法论

1.1算法的由来

1.2算法的定义

 

  要知道算法的定义,首先要知道计算问题这个概念,就是给定数据输入,计算满足某种性质输出的问题。而输入和输出这两个环节中间的部分,就是算法。

  比如经典的排序算法:冒泡排序、选择排序、插入排序。

    冒泡排序:第一次遍历,就两两交换,始终将二者中的最小值交换到前面,当交换到最前面时候这个元素就是最小值,成为有序区,然后对剩下的无序区进行相同的操作。这种方法一旦比较满足条件之后就要进行数据交换,也是比其他排序慢的原因。

    选择排序:第一次遍历找到最小元素,第二次在剩余数组中遍历找到次小元素...第n次在数组中遍历找到第n小元素。在实现的时候,在无序区中设置一个变量记录最小元素的下标,遍历完确定最小元素下标后再进行数据交换,这也是它比冒泡排序快的原因。

    插入排序:将数组待排序元素依次插入到已排序部分,使已排序部分依然保持升序的性质。也就是对无序区的每个元素,判断它在有序区中满足排序性质的位置,将其插入到有序区,直到无序区元素为零,都变成有序区。

 

 

 

   算法的性质:有穷性(不能无限循环)、确定性(每个步骤都是确定的没有歧义的)、可行性(可以机械的一步步让计算机执行的)

1.3算法的表示

(1)自然语言描述:用于交流,但可能产生歧义,不易描述

(2)编程语言:精准表达,但不同语言存在差异

(3)伪代码:介于上二者中间的,简洁、准确,关注算法本质,便于书写交流。

1.4算法的分析

  分析算法的运行时间和内存空间占用

  算法分析的原则:统一机器性能、分析最坏情况。此时仅依赖于输入规模T(n)。

  算法分析的工具:渐进分析。忽略T(n)的系数与低阶项,只关注高阶项。

    渐进紧确界:Θ

    渐进上界:O

    渐进下界:Ω

posted @ 2020-11-24 16:57  不妨不妨,来日方长  阅读(313)  评论(0编辑  收藏  举报