zoukankan      html  css  js  c++  java
  • 算法笔记

    1. 分治法能解决的问题一般具有什么特征
    2. 解空间树的动态搜索过程
    3. 递归优点?那为什么有的问题还要用非递归

    动态规划法与分治法的异同、动态规划法与贪心法的异同、分支限界与回溯

    分析性能特点。
    例,填表:动态规划法
    画图:贪心法求TSP、图着色,回溯法、分支限界法

     

     

     

    5、a.为一个分治算法编写伪代码,该算法同时求出一个n元数组的最大元素和最小元素的值。
    b.请拿该算法与解同样问题的蛮力算法做一个比较。
    解:
    a.同时求出最大值和最小值,只需要将原数组一分为二,再使用相同的方法找出这两个部分中的最大值和最小值,然后经过比较就可以得到整个问题的最大值和最小值。

    算法 MaxMin(A[l..r],Max,Min)
    //该算法利用分治技术得到数组A中的最大值和最小值
    //输入:数值数组A[l..r]
    //输出:最大值Max和最小值Min
    if(r=l) Max←A[l];Min←A[l]; //只有一个元素时
    else
    if r-l=1 //有两个元素时
    if A[l]≤A[r] Max←A[r]; Min←A[l]
    else Max←A[l]; Min←A[r]
    else //r-l>1
    MaxMin(A[l,(l+r)/2],Max1,Min1); //递归解决前一部分
    MaxMin(A[(l+r/)2+1..r],Max2,Min2); //递归解决后一部分
    if Max1<Max2 Max= Max2
    //从两部分的两个最大值中选择大值
    if Min2<Min1 Min=Min2;
    //从两部分的两个最小值中选择小值
    }

     

    b.蛮力法的算法如下:
    算法 simpleMaxMin(A[l..r])
    //用蛮力法得到数组A的最大值和最小值
    //输入:数值数组A[l..r]
    //输出:最大值Max和最小值Min
    Max=Min=A[l];
    for i=l+1 to r do
    if A[i]>Max Max←A[i];
    else if A[i]<Min Min←A[i]
    return Max,Min
    }
    时间复杂度t(n)=2(n-1)
    算法分治算法的时间复杂度为3n/2-2,蛮力法的时间复杂度为2n-2,都属于Θ(n),但比较一下发现,分治算法的速度要比蛮力法的快一些。


    求众数:
    众数是在一组数据中,出现次数最多的数据,是一组数据中的原数据,而不是相应的次数。   
    一组数据中的众数不止一个,
    如数据2、3、-1、2、1、3中,2、3都出现了两次,它们都是这组数据中的众数。 一般来说,一组数据中,出现次数最多的数就叫这组数据的众数。例如:1,2,3,3,4的众数是3。
    但是,如果有两个或两个以上个数出现次数都是最多的,那么这几个数都是这组数据的众数。   
    例如:1,2,2,3,3,4的众数是2和3。
    还有,如果所有数据出现的次数都一样,那么这组数据没有众数。 
    例如:1,2,3,4,5没有众数。对于给定的由n个自然数组成多重数集S,计算S的众数及其重数。


    设计思路 :利用快速排序将数据集S排序,再遍历整个数组,利用Number类记录每个数出现的频率,从而找出集合的众数和重数。

    用动态规划法求解TSP问题:求从1出发,经过2,3,4再回到1的最短路径长度。

    回溯法

    最优解为(1,2,1,2,3)

     

     

     

  • 相关阅读:
    237. Delete Node in a Linked List
    430. Flatten a Multilevel Doubly Linked List
    707. Design Linked List
    83. Remove Duplicates from Sorted List
    160. Intersection of Two Linked Lists
    426. Convert Binary Search Tree to Sorted Doubly Linked List
    142. Linked List Cycle II
    类之间的关系
    初始化块
    明确类和对象
  • 原文地址:https://www.cnblogs.com/wander-clouds/p/11037943.html
Copyright © 2011-2022 走看看