算法

来源:互联网 发布:零基础编程入门 编辑:程序博客网 时间: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
原创粉丝点击