算法
来源:互联网 发布:零基础编程入门 编辑:程序博客网 时间:2024/06/05 11:22
算法的定义:算法的是解决待定问题求解步骤的描述,在计算机中为指令的有限序列,并且每条指令表示一个或多个操作。
算法的特性:有穷性,确定性,可行性,输入,输出。
算法的设计要求:正确性,可读性,健壮性,高效率和低存储量需求。
#include <iostream>using namespace std;void addMethod_one();void addMethod_two();void addMethod_three();int main(int argc, const char * argv[]) { addMethod_one(); addMethod_two(); addMethod_three(); return 0;}void addMethod_one(){ int i ,j,x = 0,sum = 0,n = 10; // 执行1次 for(i = 1;i<=n;i++){ for(j = 1;j<=n;j++){ x++; sum = sum + x; // 执行了n*n次 } } cout<<"Method_One:" << sum <<endl;}void addMethod_two(){ int sum = 0; // 执行1次 for(int i = 0;i<=100;i++){ // 执行n+1次 sum += i; // 执行n次 } cout<<"Method_Two:" << sum<<endl;}void addMethod_three(){ int sum = (1 + 100) * 100 /2; // 执行1次 cout<<"Method_three:" << sum <<endl; // 执行1次}
对数阶
int count = 1;while(count <n){ count = count * 2;}// O(logn) 每次循环乘以2,2x次幂=n 经= log2n。
看个这个例子
int i ,j;for(i = 0;i<n;i++){ for(j = i;j<n;j++){ // 时间复杂度为O(1)的程序步骤序列 }}/* i = 0,内循环执行了n次,i = 1时执行了n-1次,i = n-1时,执行了1次。 n+(n-1)+(n-2) +...+1 = n(n+1)/2。最终得到 O(N平方)。*/
*推导大O阶:*
1. 用常数1取代运行时间中的所有加法常数。
2. 在修改后的运行次数函数中,只保留最高阶项。
3. 如果最高阶项存在且不是1,则支队与这个项相乘的常数。
0 0