算法效率的分析
创始人
2024-11-04 21:07:38
0

一、输入规模与执行次数

1.输入规模就是一个程序输入次数,或者是一个方法的形参。

2.执行次数就是程序中代码的执行次数

#include

//1.输入规模与执行次数的分析(n与T之间的关系)

void print1(int n){//n就是print1方法的输入规模

    printf("hello\n");//1次

    printf("hello\n");//1次

    printf("hello\n");//1次

}//该方法的输入规模为n 执行次数为3,输入规模与执行次数的的关系为 Tn(n)=3

void print2(int n){//n就是print2方法的输入规模

    for(int i = 0; i < n; i++){

        printf("hello\n");//n次

        printf("hello\n");//n次

    }

    printf("输出完成\n");//1次

}//该方法的输入规模为n 执行次数为2n,输入规模与执行次数的的关系为 Tn(n)=2n+1

void print3(int n){//n就是print3方法的输入规模

    for(int i = 0; i < n; i *= 2){

        printf("hello\n");//log2n次

        printf("hello\n");//log2n次

    }

    printf("输出完成\n");//1次

}//该方法的输入规模为n 执行次数为2n,输入规模与执行次数的的关系为 Tn(n)=2*log2n+1

void print4(int n){//n就是print4方法的输入规模

    printf("开始输出\n");//1次

    for(int i = 0; i < n; i++){

        printf("hello\n");//n次

        printf("hello\n");//n次

    }

    for(int i = 0; i < n; i++){

        for(int j = 0; j < n; j++){

            printf("hello2\n");//n^2次

            printf("hello2\n");//n^2次

        }

    }

    printf("输出完成\n");//1次

}//该方法的输入规模为n 执行次数为2n,输入规模与执行次数的的关系为 Tn(n)=2*n^2 + 2*n + 2

int main(){  

}

二、算法的时间复杂度:就是衡量算法的时间开销的方法。

#include

//2.时间复杂度O()的分析:由于直接输代码执行的次数太麻烦,我使用时间复杂度来分析算法,

//T()与O()之间的关系:只保留T()的最高次项,并将最高次项的系数改为1

void print1(int n){//n就是print1方法的输入规模

    printf("hello\n");//1次

    printf("hello\n");//1次

    printf("hello\n");//1次

}//该方法的输入规模为n 执行次数为3,输入规模与执行次数的的关系为 Tn()=3

//该方法的时间复杂度为O(1)

void print2(int n){//n就是print2方法的输入规模

    for(int i = 0; i < n; i++){

        printf("hello\n");//n次

        printf("hello\n");//n次

    }

    printf("输出完成\n");//1次

}//该方法的输入规模为n 执行次数为2n,输入规模与执行次数的的关系为 Tn()=2n+1

//该方法的时间复杂度为O(n)

void print3(int n){//n就是print3方法的输入规模

    for(int i = 0; i < n; i *= 2){

        printf("hello\n");//log2n次

        printf("hello\n");//log2n次

    }

    printf("输出完成\n");//1次

}//该方法的输入规模为n 执行次数为2n,输入规模与执行次数的的关系为 Tn(n)=2*log2n+1

//该方法的时间复杂度为O(log2n)

void print4(int n){//n就是print4方法的输入规模

    printf("开始输出\n");//1次

    for(int i = 0; i < n; i++){

        printf("hello\n");//n次

        printf("hello\n");//n次

    }

    for(int i = 0; i < n; i++){

        for(int j = 0; j < n; j++){

            printf("hello2\n");//n^2次

            printf("hello2\n");//n^2次

        }

    }

    printf("输出完成\n");//1次

}//该方法的输入规模为n 执行次数为2n,输入规模与执行次数的的关系为 Tn(n)=2*n^2 + 2*n + 2

//该方法的时间复杂度为O(n^2)

int main(){

   

}

三、空间复杂度:空间复杂度就是一个方法或程序运行所需要的空间大小。

#include

//3.空间复杂度S()的分析:空间复杂度就是一个方法或程序运行所需要的空间大小

//(其实就是程序中变量所占的字节数大小),

//与时间复杂度一样只保留最高次项并将最高次项的系数改为1。

void test1(int n){//int类型的变量占用四个字节

    int i;//int类型的变量占用四个字节

    int num[n];//int类型的数组占用4*n个字节

}//该方法的空间复杂度为O(4n+8) =>(简化为) O(n)

void test2(int n){//int类型的变量占用四个字节

    int i;//int类型的变量占用四个字节

    int j;//int类型的变量占用四个字节

    int num[n][n];//int类型的二维数组占用n^2个字节

}//该方法空间复杂度为O(n^2+12 )  =>(简化为) O(n^2)

int main(){

}

相关内容

热门资讯

7分钟了解“大菠萝789辅助”... 7分钟了解“大菠萝789辅助”详细透视开挂辅助下载-哔哩哔哩;1、不需要AI权限,帮助你快速的进行大...
四分钟私人局!hhpoker辅... 四分钟私人局!hhpoker辅助软件,wepoker辅助器免费,攻略教程(有挂分析)-哔哩哔哩1、完...
第3分钟了解(乐乐竞技)外挂透... 第3分钟了解(乐乐竞技)外挂透明挂辅助插件(辅助挂)透明挂教程(2026已更新)(哔哩哔哩);一、乐...
十分钟了解“同乡有辅助”详细透... 十分钟了解“同乡有辅助”详细透视开挂辅助攻略-哔哩哔哩;小薇(透视辅助)致您一封信;亲爱同乡有辅助玩...
一分钟晓得!德普之星辅助器ap... 一分钟晓得!德普之星辅助器app,wepoker破解游戏盒子,力荐教程(果真有挂)-哔哩哔哩1、许多...
三分钟了解(醉仙游)外挂透明挂... 三分钟了解(醉仙游)外挂透明挂辅助挂(辅助挂)教你攻略(2021已更新)(哔哩哔哩);醉仙游是一款益...
8分钟了解“心悦踢辅助软件”详... 8分钟了解“心悦踢辅助软件”详细透视开挂辅助安装-哔哩哔哩;1、不需要AI权限,帮助你快速的进行心悦...
第6分钟掌握!德州局透视脚本免... 第6分钟掌握!德州局透视脚本免费版下载手机版,pokemmo辅助器手机版下载,2025新版教程(有挂...
第5分钟了解(熊猫来了)外挂辅... 第5分钟了解(熊猫来了)外挂辅助插件(辅助挂)可靠教程(2024已更新)(哔哩哔哩);亲,有的,ai...
第5分钟了解“神途辅助脚本”详... 第5分钟了解“神途辅助脚本”详细透视开挂辅助脚本-哔哩哔哩;详细神途辅助脚本攻略(神途辅助脚本软件透...