Day1-算法与数据结构-1.认识复杂度和简单排序算法

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBfTWlpa2thQ2h1bmc,size_20,color_FFFFFF,t_70,g_se,x_16 

一,常数操作

例如:

int a = arr [i] ,加减乘除,位运算➡️是常数操作

int b = list.get(i) 不是常数操作,因为要在list里逐个遍历找直到i位置才能得到

常数操作:与数据量无关,是固定时间的操作

二,时间复杂度

在常数操作数量级的表达式中,只看最高阶的项且忽略其系数,写作O(看最高阶的项)

例子:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBfTWlpa2thQ2h1bmc,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBfTWlpa2thQ2h1bmc,size_20,color_FFFFFF,t_70,g_se,x_16  

若两个算法时间复杂度一样,只能通过实验判断谁更优

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBfTWlpa2thQ2h1bmc,size_20,color_FFFFFF,t_70,g_se,x_16 

三,额外空间复杂度

四,冒泡排序

五,选择排序

六,异或

异或🟰无进位相加

性质:1.0异或N=N,N异或N=0;2.满足交换律,结合律;3.一批数与一个数异或,这一批数中谁先谁后与一个数异或都无所谓

交换两个数的值而不用另一个变量:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBfTWlpa2thQ2h1bmc,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBfTWlpa2thQ2h1bmc,size_20,color_FFFFFF,t_70,g_se,x_16  

前提是a与b在内存中是不同的区域

真实的面试题:

有一个整数数组,问题1,一个数出现奇数次,其他数出现偶数次,问怎么找这一个数;问题2,两个数出现奇数次,其他数出现偶数次,如何找这两个数;要求时间复杂度为N,额外空间复杂度O(1)

做法:问题1,用一个变量设为0从头异或到尾,最后输出的变量即要找的数;

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBfTWlpa2thQ2h1bmc,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBfTWlpa2thQ2h1bmc,size_20,color_FFFFFF,t_70,g_se,x_16  

问题2,用一个变量从头异或到尾,输出为a异或b,另一个变量异或

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBfTWlpa2thQ2h1bmc,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值