zoukankan      html  css  js  c++  java
  • 第一章:算法绪论

    课程目标:

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

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

    1.1算法的由来

    1.2算法的定义

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

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

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

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

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

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

    1.3算法的表示

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

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

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

    1.4算法的分析

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

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

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

        渐进紧确界:Θ

        渐进上界:O

        渐进下界:Ω

  • 相关阅读:
    CS224n笔记2 词的向量表示:word2vec
    志在必得的。。。。失败。。。
    大二第二个学期帮学姐做的毕设
    本地系统密码破解
    ubuntu12.04装有线网卡驱动(AR8162)
    数据结构递归与非递归走迷宫
    vs6.0项目升迁到vs2012中宏映射问题
    文件太大,对于目标文件系统.文件过大 无法复制问题
    第39级台阶
    linux编程
  • 原文地址:https://www.cnblogs.com/masbay/p/14031203.html
Copyright © 2011-2022 走看看