//好久没有更新,是因为去练车考驾照了! 终于拿到驾照了,接下来就要更加努力地码代码写博客了。
一.什么是数据结构?
数据结构是在内存中管理数据的,可以对数据进行增删查改。
与数据库的区别?
数据库是在磁盘中管理数据的,可以对数据进行增删 查改 。
在磁盘中存储数据是不带电保存,相对内存存储数据存储时间较长。
二.什么是算法?
算法是处理数据的,如通过快排的方式排序数据。
三.时间复杂度
算法效率衡量往往要看其算法的时间复杂度和空间复杂度。
其中,时间复杂度不是计算程序执行的时间,而是估算程序执行的次数的量级。
时间复杂度是一个函数,不计算算法执行的时间,而是计算算法执行的次数。
//算法执行的时间与计算机的硬件有关。
实际计算时间复杂度的时候,只需要大概的执行次数,这里我们使用大O渐进表示法来表示。
计算时间复杂度的大O渐进表示法的规则:
1.用1来取代函数式中的常数项
2.只保留最高项
3.如果最高项的系数存在且不为1,则去除系数得最终结果
有些程序的时间复杂度计算会出现多种不同的结果。
最坏情况:完成程序要进行的最多次执行次数
最好情况:完成程序要进行的最少次执行次数
平均情况:一般计算为最坏情况与最好情况和的二分之一倍
在计算复杂的时间复杂度时常常以其最坏情况的结果为最终结果。
例1:冒泡排序的时间复杂度为O(N^2)

由于冒泡排序的思想,在第一轮循环即遍历整个数组并不完成元素的交换,视为数组是有序的。程序执行的次数就为N-1次。
若要进行冒泡排序的数组是有序的,那么最好情况的时间复杂度为O(N)

例2:二分查找的时间复杂度为O(log2 N)

若二分查找的数正好时数组最中间的数为最好情况,其时间复杂度为O(1)

例3:斐波那契递归的时间复杂度为O()



改善斐波那契递归

//快排的时间复杂度是O(N* log2 N)
有关时间复杂度相关习题的讲解:
给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
输入: nums = [1,2,3,4,5,6,7], k = 3
输出: [5,6,7,1,2,3,4]
解释:
向右轮转 1 步: [7,1,2,3,4,5,6]
向右轮转 2 步: [6,7,1,2,3,4,5]
向右轮转 3 步: [5,6,7,1,2,3,4]
至少用三种方法来解决该题
方法一:超出时间限制

方法二:该方法通过


方法三:

还有好多知识点要补充阿,加油!!