数据结构
5 | 7 | 6 | 2 | 0 | 3 | 1 | 4 |
插入数据9
5 | 7 | 6 | 2 | 9 | 0 | 3 | 1 | 4 |
数据结构是一种用来组织和存储数据的方式,它定义了数据之间的关系和操作。数据结构可以有不同的形式和实现方式,如数组、链表、栈、队列、树和图等。数据结构的选择和设计对于实现特定的算法和解决问题非常重要,它可以影响到程序的效率和性能。数据结构也是计算机科学的基础知识之一,是理解和应用计算机科学的重要内容之一。
算法
算法就是解决问题的方法
累加法 例1+2+3+4+5+......+100
利用等差公式
算法是解决问题的一系列步骤或规则,它描述了如何对输入数据进行处理,以获取所需的输出结果。算法可以通过使用合适的数据结构来实现,以提高执行效率和优化空间利用。算法的好坏可以通过时间复杂度和空间复杂度来评估。
如何判断算法的优劣?
通过时间复杂度来进行判别的
算法的时间复杂度的计算是如何计算出来的?
时间复杂度是研究数据总和x和算法执行次数y之间的关系。
y = an + b (a是系数,b是常数)如果x非常大---->y=n(算法的执行次数和数据总量直接相关)---->O(n)
y = an^2 + bn + c (ab是系数,c是常数)如果x非常大----->y=n^2(算法的执行次数和数据总量直接相关)---->O(n^2)
y = a(a是常数)---->算法的执行次数和数据总量没有任何关系---->O1
logn ---->算法的执行次数和数据总量存在log别的关系---->O(logn)
列题:
void fun(int n){
int i = 1
while(i<n){
i = i*2;
}
}
解析:
第一轮:i = 1
第二轮:i = 2
第三轮:i = 4
第四轮:i = 8
第五轮:i = 16
...............
第y轮:i = 2^(y-1) = n
2^(y-1) = n ---------------> y = log2n
void fun (int n){
int i = 0;
while(i*i*i<n){
i ++;
}
}
解析
第一轮:i = 0
第二轮:i = 1
第三轮:i = 2
第四轮:i = 3
.......
第y轮:i = (y-1)
(y-1)*(y-1) *(y-1) = n
y^3 = n
y = n^1/3
x = 2
while(x<n/2){
x = x * 2;
}
解析
第一轮:x = 2
第二轮:x = 4
第三轮:x = 8
第四轮:x = 16
.......
第y轮:x = 2^y
2^y = n ------>y = log2n
x= 0
while (n>(x+1)*(x+1)){
x = x + 1;
}
解析
第一轮: x = 0
第二轮:x = 1
第三轮:x = 2
第四轮:x = 3
........
第y轮:x = y - 1
y^y = n
y = 根号n
i = 1;k = 0;
while(i<n-1){
k = k + 10*i;
i++;
}
解析
第一轮:i = 1
第二轮:i = 2
第三轮:i = 3
第四轮:i = 4
......
第y轮:i = y
y = n-1
y = On