首页 > 编程知识 正文

数据结构c语言版笔记,数据结构笔记整理

时间:2023-05-05 04:19:09 阅读:23091 作者:3388

什么是数据结构

数据结构是计算机存储和组织数据的方法,大致分为以下几种

线性结构

数组、链表、堆栈、队列、哈希表

树结构

AVL树、红黑色树、b树、堆、三、哈夫曼树、以及核对集

图形结构

邻接矩阵,邻接表

什么是算法

基本概念

算法是解决特定问题的一系列执行步骤。 要解决同一问题,可能有多种算法。 必须选择最容易阅读、执行效率最高的代码。

下面的代码示例都是算法。

计算两个数之和:

公共int plus (inta,int b ) {

返回a b;

}

复制代码并计算1到n之间的和:

公共防毒(Intn ) {

int sum=0;

for(intI=0; i=n; I ) {

sum =i;

}

返回和;

}

复制代码

不同算法的优劣

典型斐波那契数列问题:

01123581321 .第一个数第二个数=第三个数

第n个个数是多少?

复制代码

有递归和循环两种思路。

想法1 :递归

staticpublicintfib1(intn ) {

if(n=1) { return n; }

返回fib1(n-1 ) fib1) n-2;

}

复制代码

想法2 :循环

staticpublicintfib2(intn ) {

if(n=1) { return n; }

int first=0;

int second=1;

int temp=0;

for(intI=0; i n - 1; I ) {

temp=第一个第二个;

first=second;

第二阶段=时间;

}

返回时间;

}

复制代码

增大参数n的值,可以明显地感觉到循环比递归快得多。

2 .如何评价算法的好坏

事后统计法:比较两种算法的执行时间。

一般来说,从以下维度来评价算法的优劣。

正确程度

容易阅读

顽强性

时间复杂度:估计程序指令的执行次数、执行时间

空间复杂性:估计运行程序所需的空间

大o符号

复杂度一般用大o表示,表示与数据规模n相对应的复杂度。 大o表示法只是一个粗略的分析模型,估算可以在短时间内知道一个算法的执行效率。

忽略常数、系数、低阶

o () (1) ) )。

2n3o(n ) )。

n2n6o(n ) ) )。

4n33n222n100o(n^3) () ) ) ) ) ) 0

log2n、log9n统称为logn (忽略底数)。

按照复杂度从小到大的顺序,o(1) o ) logn ) n (o ) o (n ^3) o (2^ n ) o ) n! (o(n^n ) )。

回顾前面的斐波那契数列,分析一下两种算法的时间复杂性。

因此,如果传递的参数n非常大,则两种算法所示的差异也非常大。 由此可见高效算法的重要性。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。