• 算法一


    1.  循环不变式主要用于帮助我们理解算法的正确性。对于循环不变式,必须证明它的三个性质:

        初始化:它在循环第一轮迭代之前,应该是正确的。

        保持:如果在循环某一次迭代开始之前它是正确的,那么,在下一次迭代开始之前,它也应该保持正确。

        中止:当循环结束时,不变式给了我们一个有用的性质,它有助于表明算法是正确的。

      算法分析即指对一个算法所需要的资源进行预测。

      RAM模型包含了计算机中常见的指令:算数指令(加减乘除、取余、向下取整、向上取整)、数据移动指令(装入、存储、复制指令)、控制指令(条件和非条件转移、子程序调用和返回指令)。每条指令所需的时间都为常量。

      算法的运行时间是指在特定输入时,所执行的基本操作数(步数)。

    2.  算法的设计有很多方法,插入排序使用的是增量(incremengtal)方法,在排好子数组A[1..j-1]后,将元素A[j]插入。分治法(divide-and-conquer)是另一种设计策略。

       分治模式在每一层递归上都有三个步骤:

      分解(divide):将原问题分解成一些列子问题;

      解决(conquer):递归地解各子问题,若子问题足够小,则直接求解;

      合并(combine):将子问题的结果合并成原问题的解; 

    #include<iostream>
    using namespace std;
    void Merge(int a[],int left,int center,int right,int n)
    {
        int *t=new int[n];
        int i = left;
        int j=center+1;
        int k=0;
        while(i<=center && j<= right)
        {
            if(a[i]<=a[j])
            t[k++] = a[i++];
            else
            t[k++] = a[j++];
        }
        if(i==center+1)
        {
            while(j<=right)
            t[k++]=a[j++];
        }
        else
        {
            while(i<=center)
            t[k++] = a[i++];
        }
        for(i=left,k=0;i<= right;i++,k++)
        a[i]=t[k];
        delete []t;
    }
    void MSort(int a[],int left,int right)
    {
        if(left < right)
        {
            int center = (left+right)/2;
            MSort(a,left,center);
            MSort(a,center+1,right);
            Merge(a,left,center,right,right-left+1);
        }
    }
    
    int main()
    {
        int intArray[10]={2,346,4,768,4,23,45,68,4,0};
        MSort(intArray,0,9);
          for(int i = 0; i < 10; i++)
            cout << intArray[i] << endl;
    }

     合并排序的运行时间为nlgn,插入排序为n^2.

  • 相关阅读:
    Ubuntu18.04 更新gcc和g++的版本号
    mkimage uboot
    ubuntu终端进入secure boot 修改为disable
    apt install g++8riscv64linuxgnu
    计算机专用英语词汇1702个词汇表
    快收藏!高手Linux运维管理必备工具大全,你会吗?
    Cilium 架构设计与概念解析
    prometheus添加集群
    openkruise详解
    Windows11安装Ubantu 18.04 LTS
  • 原文地址:https://www.cnblogs.com/ttssrs/p/2952412.html
Copyright © 2020-2023  润新知