5 7 6 2 0 3 1 4
5 | 7 | 6 | 2 | 0 | 3 | 1 | 4 |
插入数据9
5 | 7 | 6 | 2 | 9 | 1 | 3 | 1 | 4 |
什么是数据结构?
数据结构是指数据元素之间的关系和组织方式,是一种用来存储和组织数据的方式。数据结构可以帮助我们更有效地管理和操作数据,提高程序的效率和性能。常见的数据结构包括数组、链表、栈、队列、树、图等。在计算机科学中,数据结构是非常重要的基础知识,对于编写高效的算法和程序至关重要。
什么是算法?
算法就是解决问题的方法
例:1+2+3+4+5+6+7+8+......+1000
累加法
利用等差公式算出答案
算法是解决特定问题或执行特定任务的一系列步骤或规则。在计算机科学中,算法通常是用来描述如何执行计算、数据处理或自动推理的方法。算法可以用来解决各种问题,如排序、搜索、最短路径查找等。算法的设计和分析是计算机科学的一个重要领域。
如何判别算法的优劣?
通过时间复杂度来判别
算法的时间复杂度是如何计算出来的?
时间复杂度是研究数据总量n和算法执行次数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是常数)----->算法的执行次数和数据总量没有任何关系----->O(1)
y = logn----->算法的执行次数和数据总量存在log别的关系----->O(logn)
例:
例题1:
void fun(int n){
int i = 1
while(i<n){
i = i*2;
}
}
A.O(n) B.O(n^2) C.O1 D.O(logn)
解:
第一轮: i = 1
第二轮: i = 2
第三轮: i = 4
第四轮: i = 8
第五轮: i = 16
.......
第y轮: i = 2^(y-1) = n
2^(y-1) = n -------------> y = log2n
例题2:
void dun (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
例题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
例题4:
x = 0;
while(n>(x+1)*(x+1)){
x =x +1;
}
第一轮:x = 0
第二轮:x = 1
第三轮:x = 2
.......
第y轮:x = y - 1
y * y = n
y = 根号n
例题5:
i = 1;k = 0;
while(i<n-1){
k = k + 10*i;
i++;
}
第一轮:i = 1
第二轮:i = 2
第三轮:i = 3
......
第y轮:i = y
y = n-1