当前位置: 首页 > article >正文

学习数据结构和算法的第3天

常数循环的复杂度

计算Func4的时间复杂度

voidFunc4(int N)
{
int count = 0;
for (int k = 0; k < 100; ++ k)
{
++count;
}
printf("%d\n", count);
}

O(1) 不是代表算法运行一次,是常数次

strchar的时间复杂度

#include<stdio.h>
void const char*strchr(const char*str,int character);
{
    while(*str)
    {
        if(*str==character)
            return 0;
        else
            ++str;
    }
}

假设查找的是h 1 最好情况:任意输入规模的最小运行次数(下界)

假设查找的是w N/2 平均情况:任意输入规模的期望运行次数

假设查找的是d N 最坏情况:任意输入规模的最大运行次数(上界)

当一个算法随着输入不同,时间复杂度不同,时间复杂度做悲观预期,看最坏的情况

冒泡排序的时间复杂度

计算Bubb1esort的时间复杂度

void BubbleSort(int* a, int n)
{
    assert(a)
	for (size_t end = n; end > 0; --end)
    {
        int exchange = 0;
		for (size_t i=1; i < end; ++1)
        {
            if (a[1-1]> a[i])
            {
	Swap(&a[1-1], &a[i]);
	exchange = 1;
            }
        }
	if (exchange == 0)
break;
    }
}

精确:F(N)=N(N-1)/2* 一个等差数列

时间复杂度:O(N*2)

时间复杂度不能只看是几层循环,而是要去看它的思想

计算Binarysearch的时间复杂度:

int Binarysearch(int* a, int n, int x)
{
    assert(a);
	int begin= 0;
	int end = nl;
	while (begin < end)
    {
        int mid = begin + ((end-begin)>>1);
	if (a[mid] < x)
	begin = mid+1;
	else if (a[mid] > x)
	end=mid;
	else
	return mid;
    }
return -1;
}

F(N)=O(logN)


http://www.kler.cn/a/229112.html

相关文章:

  • JavaWeb 前端基础 html + CSS 快速入门 | 018
  • 归子莫的科技周刊#2:白天搬砖,夜里读诗
  • 代理模式实现
  • 解决 Mac 系统上的 node-sass 问题
  • C#,图论与图算法,任意一对节点之间最短距离的弗洛伊德·沃肖尔(Floyd Warshall)算法与源程序
  • 【Vue3 入门到实战】1. 创建Vue3工程
  • MySQL:关于存储过程
  • Packet Tracer - Configure IOS Intrusion Prevention System (IPS) Using the CLI
  • 第1章 简单使用 Linux
  • 空气质量预测 | Matlab实现基于SVR支持向量机回归的空气质量预测模型
  • 【RK3399 Android10, 支持温控风扇】
  • mysql关于left join关联查询时on和where条件区别
  • 数学建模:数据相关性分析(Pearson和 Spearman相关系数)含python实现
  • Kafka SASL_SSL双重认证
  • wins 安装 tensorflow keras
  • 一个冷门的js加密逆向分析
  • LeetCode:9.回文数,对整数的反转操作
  • 紫光展锐M6780丨一语即达,“声”临其境
  • Django的配置文件setting.py
  • SENet在双塔中的应用
  • Oracle12c之Sqlplus命令行窗口基本使用
  • SpringBoot实战第三天
  • Android 11.0 framework实现禁用SIM卡的功能
  • 第三百零九回
  • 二叉树oj笔记
  • 安卓平台valgrind交叉编译