首页 > 编程语言 >数据结构(一)数据结构与算法

数据结构(一)数据结构与算法

时间:2023-08-05 20:38:02浏览次数:28  
标签:递归 复杂度 算法 时间 数据结构 sum

目录

算法

算法是一系列程序指令,用于处理特定的运算和逻辑问题。
例:1+2+3...+100

int i, sum=0, n=100;
for(i = 1; i <=n; i++){
	sum = sum + i;
}
printf("%d", sum);

等差数列:Sn=( a1 + an ) * n /2 = n* a1+n * (n-1) * d/2

int i, sum = 0, n=100;
sum = ( 1 + n ) * n /2;
printf("%d", sum);
  • 算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。
  • 算法的五个基本特性:输入、输出、有穷性、确定性、可行性。
  • 算法的设计要求:正确性、可读性、健壮性、高效率、低存储量。

时间复杂度 T(n)=O(f(n))

渐进时间复杂度: 若存在函数f(n),使得当n趋近于无穷大时,T(n)/f(n)的极限值为不
等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称
为O(f(n)),O为算法的渐进时间复杂度,简称为时间复杂度。

————时间复杂度就是把程序的相对执行时间函数T(n)简化为一个数量级,这个数量级可以是n、n
2、n3等。

O(1)常数阶、O(n)线性阶、O(n²)平方阶、O(logn)对数阶

推导大O阶方法:

  1. 用常数1取代所有加法常数;
  2. 只保留最高项;
  3. 如果最高阶存在且不是1,则去除掉最高阶项前面的系数。

得到的结果就是大O阶。

对数阶:
在这里插入图片描述

2^x=n,得到x=log2n。

在这里插入图片描述
最坏情况与平均情况,没有特殊说明的情况下都指最坏时间复杂度

空间复杂度 S(n)=O(f(n))

对一个算法在运行过程中临时占用存储空间大小的量度。n为问题的规模,f(n)为算法所占用存储空间的函数。

递归操作的空间复杂度也是线性的,如果递归的深度是n,那么空间复杂度就是O(n)。

1. 衡量算法优劣的主要标准是时间复杂度和空间复杂度。
2. 数据结构是数据的组织、管理和存储格式,其使用目的是为了高效
地访问和修改数据。
3. 时间复杂度是对一个算法运行时间长短的量度,用大O表示,记作
T(n)=O(f(n))。
4. 空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量
度,用大O表示,记作S(n)=O(f(n))。其中递归算法的空间复杂度和递归深度成正比。

标签:递归,复杂度,算法,时间,数据结构,sum
From: https://www.cnblogs.com/Jusaka-12/p/17608511.html

相关文章

  • 【笔记】数据结构专题
    恐怖一大堆Ynoi,一大堆不会的以后再来吧https://vjudge.csgrandeur.cn/article/39088.5数据结构扫描线P5490【模板】扫描线对坐标离散化。维护\(a,b\),\(a\)是相邻两个矩形高度差,\(b_i\)初始全零,操作是\(b[l,r]+=v\),询问\(\sum_{i}a[b_i\geq1]\)。维护\(\min,\sum......
  • 【数据结构】散列表
    这种查找结构与线性表和树形结构都不同,前两者的共同特点是关键字与记录位置之间没有确定关系,需要从一个起点不断进行比较查找位置。可以知道散列表(哈希表)是一种完全不同机制的查找结构,不采用基于比较选择的查找机制,而是直接在关键字与位置之间建立映射。所以在讨论它时也和上面......
  • c#学习笔记----------------c#简单算法之排序算法
     排序算法参考文章:https://blog.csdn.net/weixin_61361738/article/details/128794945冒泡排序namespaceConsoleApp1{internalclassProgram{staticvoidMain(string[]args){stringstr=Console.ReadLine();str......
  • C/C++ 数据结构五大核心算法之贪心算法_钱币找零问题
    贪婪算法(贪心算法)是指在对问题进行求解时,在每一步选择中都采取最好或者最优(即最有利)的选择,从而希望能够导致结果是最好或者最优的算法。贪婪算法所得到的结果往往不是最优的结果(有时候会是最优解),但是都是相对近似(接近)最优解的结果。贪婪算法并没有固定的算法解决框架,......
  • 文心一言 VS 讯飞星火 VS chatgpt (71)-- 算法导论7.1 1题
    参照图7-1的方法,说明PARTITION在数组A=(13,19,9,5,12,8,7,4,21,2,6,11)上的操作过程。文心一言:PARTITION是一种常见的快速排序算法,其目的是将数组分成两个部分,使得其中一个部分的所有元素都小于另一个部分的所有元素。在这个过程中,最小的元素会被放在数组的最后一个位置。以下是在数组A=(......
  • 文心一言 VS 讯飞星火 VS chatgpt (71)-- 算法导论7.1 1题
    参照图7-1的方法,说明PARTITION在数组A=(13,19,9,5,12,8,7,4,21,2,6,11)上的操作过程。文心一言:PARTITION是一种常见的快速排序算法,其目的是将数组分成两个部分,使得其中一个部分的所有元素都小于另一个部分的所有元素。在这个过程中,最小的元素会被放在数组的最后一个位置。以下是在数组......
  • 迪杰斯特拉算法
    迪杰斯特拉算法(单源最短路径)算法基本流程:node0asstart.注意算法流程默认图是联通的,若不联通,需要添加循环跳出处理。stepNode0Node1Node2Node3visitedpointset0(init)0INT_MAXINT_MAXINT_MAX{}10(√)31INT_MAX20(√)31(√)9......
  • 考研数据结构——每日一题[二叉排序树]
    3786.二叉排序树你需要写一种数据结构,来维护一些数,其中需要提供以下操作:插入数值x。删除数值x。输出数值x的前驱(前驱定义为现有所有数中小于x的最大的数)。输出数值x的后继(后继定义为现有所有数中大于x的最小的数)。题目保证:操作1插入的数值各不相同。操作......
  • C/C++ 数据结构五大核心算法之回溯法-N皇后问题
    N皇后问题:在n*n的棋盘上要摆n个皇后,要求:任何两个皇后不同行,不同列也不在同一条斜线上,求给一个整数n,返回n皇后的摆法数。#include<iostream>#include<math.h>#defineN8usingnamespacestd;intq[N+1];//q[i]表示第i个皇后在第i行上的第q[i]列intcheck(i......
  • 数据结构-算法-01-算法初步
     ......