线性查找的定义:又称顺序查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功。否则失败。
//代码示例
public static <E> int search( E []data,E target){
for( int i = 0; i< dada.length; i++){
if( data[i].equals(target) ){
return i;
}
}
return -1;
}
循环不变量(Loop invariant)
是一组在循环体内、每次迭代均保持为真的性质,通常被用来证明程式或伪码的正确性。一个循环不变量是指在循环开始和循环中每一次迭代时永远为真的量,这意味着在循环中和循环结束时循环不变量和循环终止条件必须同时成立。

如何写出正确代码:
- 定义清楚循环不变量
- 维护循环不变量
- 函数功能,输入个输出
时间复杂度
算法的时间复杂度是一个函数,常用大O符号表述,不包括这个函数的低阶项和首项系数。简单理解就是常数不重要,n代表数据的规模。
- O(n):上例中的线性查找。
- O(n²):
for( int i = 0; i<data.length; i++){
for( int j = i+1; j<data.length; j++){
//获得一个数据对 (data[i],data[j])
}
}
- O(㏒n):
数字n的二进制位数
while(n){
n%2 // n的二进制中的一位
n/2
}
-
o(√n)
数字n的约数
for( int i=i; i*i<=n; i++){
if( n%i == 0){
//n 和 i是n的两个约数
}
}
- O(2^N):长度为n的二进制数字
- O(n!): 长度为n的排列
- O(1): 数字n是否为偶数
3758

被折叠的 条评论
为什么被折叠?



