• 第一章:算法绪论


    课程目标:

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

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

    1.1算法的由来

    1.2算法的定义

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

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

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

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

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

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

    1.3算法的表示

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

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

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

    1.4算法的分析

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

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

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

        渐进紧确界:Θ

        渐进上界:O

        渐进下界:Ω

  • 相关阅读:
    解决RobotFramework的关键字不能高亮的问题
    使用Python遇到:'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte 问题
    通过Jekins执行bat脚本始终无法完成
    Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
    [转]The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
    HDU 2686 MCMF
    HDU 4278 卡特兰,区间DP
    POJ 2985 名次树
    POJ 2531 深搜剪枝
    Uva 10061 进制问题
  • 原文地址:https://www.cnblogs.com/masbay/p/14031203.html
Copyright © 2020-2023  润新知