算法时间复杂度对比

题目:求1-1/x+1/x^2-1/x^3+......+1/(-x)^(n-1)

算法一:

#include<stdio.h>
#include<sys/timeb.h>
void main(){
    timeb t1,t2;
    long t;
    double x,sum=1,sum1;
    int i,j,n;
    printf("请输入x n:");
    scanf("%lf%d",&x,&n);
    ftime(&t1);
    for (i=1;i<=n;i++)
    {
        sum1=1;
        for(j=1;j<=i;j++)
             sum1=sum1*(-1.0/x);
        sum+=sum1;
    }

    ftime(&t2);
    t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm);
    printf("sum=%lf用时%ld毫秒\n",sum,t);
}

时间复杂度:

算法2:

#include<stdio.h>
#include<sys/timeb.h>
void main(){
    timeb t1,t2;
    long t;
    double x,sum=1,sum1=1;
    int i,j,n;
    printf("请输入x n:");
    scanf("%lf%d",&x,&n);
    ftime(&t1);
    for (i=1;i<=n;i++)
    {
        sum1*=(-1.0/x);
        sum+=sum1;
    }

    ftime(&t2);
    t=(t2.time-t1.time)*1000+(t2.millitm-t1.millitm);
    printf("sum=%lf用时%ld毫秒\n",sum,t);
}

时间复杂度:

算法时间复杂度对比,布布扣,bubuko.com

时间: 2025-01-05 11:00:25

算法时间复杂度对比的相关文章

算法时间复杂度

flyfish 2015-7-21 引用自<大话数据结构> 算法时间复杂度定义 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间量度,记作:T(n)=O(f(n)).它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度.其中f(n)是问题规模n的某个函数. 这样用大写O( )来体现算法时间复杂度的记法,我们称之为大O记法. 一般情

算法时间复杂度和空间复杂度

一.时间复杂度 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,今儿分析T(n)随n的变化情况并确定T(n)的数量.算法的时间复杂度,也就是算法的时间量度,T(n)=O(f(n)), 它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称时间复杂度.其中f(n)是问题规模n的某个函数. O(1) 常数阶 O(n) 线性阶 O(n2)  平方阶 1.推导大O阶方法 用常数1取代运行时间总的所有加法常数 在修改后的运行次数函数中,只保留

比较排序算法时间复杂度下界为nlogn的证明

比较排序算法的时间复杂度是O(nlogn)的证明: 排序算法的比较是两两进行的,所以可以抽象成一棵二叉树,相互比较的数分别是左右叶子结点,,比较的结果存储在父节点中,依此类推.那么算法的时间复杂度就是取决于树的深度.如果要对n个数字进行比较排序,则需要进行n!次,即该二叉树有n!片叶子. 一棵深度为d的二叉树拥有的叶子结点数最大为2d个,则具有n!片叶子的二叉树的深度为logn!. logn!=logn+log(n-1)+log(n-1)+…+log(2)+log(1)≥logn+log(n-1

算法时间复杂度的计算 [整理]

基本的计算步骤 时间复杂度的定义 一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数.记作T(n)=O(f(n)),称O(f(n))为算法的渐进时间复杂度(O是数量级的符号 ),简称时间复杂度. 根据定义,可以归纳出基本的计算步骤 1. 计算出基本操作的执行次数T(n) 基本操作即算法中的每条语句(以;号作为分割),语句的执行次数也叫做语

排序算法时间复杂度的下界

<算法导论>中有一节讲的是“(比较)排序算法时间的下界”,本文将论述同一个问题,思路略有差异.本文将从信息熵的角度论述排序算法时间复杂度的下界.若本文论述过程中有错误或是不足,还请各位指正. 1. 问题归约 排序,涉及到被排序的序列和排序的方法.(比较)排序算法时间的下界对被排序的序列和排序方法做了以下限制 没有关于被排序序列的先验信息,譬如序列内数据的分布.范围等,即认为序列内元素在一个开区间内均匀分布.同时,序列内元素互异.(可以从两个方面理解元素互异的限制,其一是对于随机的序列而言,两元

新发现:排序算法时间复杂度只有O(3n),命名为&quot;wgw&quot;排序法

思路:首先在待排序数组i[]中找出最大的值,以(最大值+1)的大小创建一个空数组kk[],然后遍历待排序数组i[]中的值n,其值n对应数组kk[]中的第n个元素加1.最后再把数组kk[]排好序的值赋回给数值i[]. 评价:此算法时间复杂度为O(3n) 代码实现如下: int[] i ={2,6,9,8,5,6}; int temp = i[0]; for (int k = 1; k < i.length; k++)    {    if(i[k] > temp){     temp = i[k

常用的SQL分页算法及对比

SQL Server 2005引入的新方法. 1 SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY keyField DESC) AS rowNum, * FROM tableName) AS t WHERE rowNum > start[比如:90] AND rowNum <= end[比如:100]=>[返回91-100] 2 3 SELECT top (PAGESIZE[比如:10]) FROM (SELECT ROW_NUMBER(

数据结构和算法-时间复杂度和空间复杂度

[算法时间复杂度的定义] 在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级.算法的时间复杂度,也就是算法的时间量度,记作:T(n) = O(f(n)).它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐近时间复杂度,简称为时间复杂度.其中f(n)是问题规模n的某个函数. 即:执行次数=时间 [如何分析一个算法的时间复杂度?即:如何推到大O阶呢?] -用常数1取代运行时间中的所有加法常数 -在修改

常用排序算法时间复杂度和空间复杂度简析

1. preface /**** *    This article will try to explain something about: *        --Bubble sort. *        --Quick sort. *        --Merge sort. *        --Heap sort. *    To read this, some prerequisites is necessary: *        --a survive skill in C pr