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

常数循环的复杂度

计算Func4的时间复杂度

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

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

strchar的时间复杂度

c 复制代码
#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的时间复杂度

c 复制代码
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的时间复杂度:

c 复制代码
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)

相关推荐
inrichtt3 分钟前
第八课时:SPI总线揭秘:四线全双工通信的奥
c语言·数据结构·stm32·单片机·嵌入式硬件
HPtiger39 分钟前
数据结构——选择排序
数据结构·算法·排序算法
康实训1 小时前
老年评估仿真实训平台架构设计与老年人能力评估实训室教学落地实践
大数据·人工智能·算法·实训室·实训室建设
DongQiShanRen1 小时前
六根硬件映射(四):归属澄清、两处不一致与卷十一总表
开发语言·人工智能·算法·rust·哈希算法·集成学习
CCblandy1 小时前
雪花 ID 四个边界实测:时钟回拨重号 500 个,前端 JSON.parse 直接丢精度
后端·python·算法·性能优化·架构
丑梨数据1 小时前
信创环境里跑文档工具:格式兼容与本地合规的几个坑
数据结构·人工智能·算法·决策树·排序算法
烂蜻蜓1 小时前
Pandas入门教程(四):Series数据结构——创建、索引与常用方法
数据结构·pandas
erzong2313 小时前
Linux操作系统:线程概念与控制
linux·算法
星恒随风3 小时前
Linux线程概念详解:从分页存储、页表、MMU与TLB,深入理解线程和进程的区别与联系
linux·运维·笔记·学习·状态模式
qq_284274053 小时前
数控机床编程基础与坐标系:编程六步流程、程序号/程序段/程序字格式,与右手定则下车床铣床XYZ轴判定(含考点)
笔记·学习·自动化·制造