算法基础

108 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

时间复杂度

常数时间操作

  • 执行时间固定的为常数时间操作,执行时间不固定不是常数操作 ·常见的算术运算(+、-、*、/、%等) ·常见的位运算(>>带符号右移、>>>不带符号右移、<<、|、&、^等) ·赋值、比较、白增、白减操作等 ·数组寻址操作 在这里插入图片描述

排序算法O(N^2)

选择排序

  • 每次确定最小值[0-n-1],[1-n-1],[2-n-1]......
  • 每个范围的前界:0,1,2...... 由第一个for循环确定 i
  • 整个范围 [i-n-1] 由第二个for循环确定——找出最小值
  • 进行swap交换 在这里插入图片描述

冒泡排序

  • 每次确定最值[0-n-1],[0-n-2],[0-n-3] 在这里插入图片描述在这里插入图片描述

插入排序

  • 时间复杂度与原始待排序数组的有序程度有关
  • 完全有序与排序结果一致是O(n)
  • 完全有序与排序结果逆序是O(n^2) 在这里插入图片描述在这里插入图片描述

在这里插入图片描述

二分法

  • 适用范畴
  • 在一个有序数组中,找某个数是否存在
  • 在一个有序数组中,找>=某个数最左侧的位置
  • 在一个有序数组中,找<=某个数最右侧的位置
  • 局部最小值问题 在这里插入图片描述

异或运算

  • 异或运算:同0异1
  • 异或运算相当于无进制相加。110 | 111 = 001
  • 异或性质:
    • 0^N==N N^N==0
    • 异或运满足交换律和结合率

在这里插入图片描述

  • 适用题目
    • 整个数组中,只有一个数出现奇数次,其他数均出现偶数次,求取这个数。
    • int类型的数,提取出最右侧的“1”
    • 整个数组中,有两种数出现奇数次,其他数均出现偶数次,求取出现奇数次的数。

在这里插入图片描述

  • 提取出最右侧的“1”

    • 提取出整数二进制中“1”的个数 在这里插入图片描述 提取出整数二进制中“1”的个数
  • 整个数组中,有两种数出现奇数次,其他数均出现偶数次,求取出现奇数次的数。 在这里插入图片描述在这里插入图片描述