傻大方


首页 > 知识库 > >

算法|算法设计与分析-学习版


按关键词阅读: 设计 算法 学习 分析

1、1算法:是若干条指令组成的有穷序列2算法的三个要素1) 数据:运算序列中作为运算对象和结果的数据2) 运算:运算序列中的各种运算:赋值 , 算术和逻辑运算3) 控制和转移:运算序列中的控制和转移.四条性质:输入、输出、确定性、有穷性3四条性质:1) 输入:有零个或多个由外部提供的量作为算法的输入2) 输出:算法产生至少一个量作为输出3) 确定性:组成算法的每条指令是清晰的 , 无歧义的 。
4) 有限性:算法中每条指令的执行次数是有限的 , 执行每条指令的时间也是有限的 。
4程序:是算法用某种程序设计语言的具体实现5算法的复杂性:算法运行所需要的计算机资源的量时间复杂性(算法运行所需要的计算机时间资源的量)空间 。

2、复杂性(算法运行所需空间资源的量)时间复杂性的三种情况:最坏情况(可操作性最好且最优实际价值)、最好情况、平均情况6分治法的设计思想:将一个难以直接解决的大问题 , 分割成一些规模较小的相同问题 , 以便各个击破 , 分而治之 。
7递归:直接或间接地调用自身的算法 。
递归函数:用函数自身给出定义的函数 。
8阶乘函数可递归定义为 :1 n=0n! = *n(n -1)! n a0递归定义式:int factorial int n)if (n = 0) return 1;
return n * factorial(n-1);
9Fibonacci数列:无穷数列1 ,1 , 2, 3, 5, 8, 13, 21, 34,。

3、5 , 可递归定义为1n =0F(n)1n =1、F(n 1) +F( n 2)n 1递归定义式:int fibonacci( int n)if (n #define M 13#define N 13Triangle(char AMN) int i,j;
printf(n输入第1行的数据:”);for (j=O;
j #define M 2 #define N 3 MatrixMultiply( int AMN, int BNM, int CMM) int i,j,k,sum;
for (i=0;
i# define MAXLEN 11 typedef struct int key;
type_eleme 。

4、nt;
int binary_search(type_element r, int key) int left=1,right=MAXLEN,middle;
while (leftkey) right=middle-1;
/ 在右半部继续查找 elseleft=middle+1;
/ 在右半部继续查找 return -1;
void main() int i,j,key;
type_element temp,rMAXLEN+1=0,9,13,15,30,37,55,60,75,80,90,92;
for (i=1;
irj.key) temp=ri;
ri=rj;
rj=temp;
for (i=1;
i #in 。

5、clude #define MAXLEN 10 int partition( int r, int s,int t) int i,j,rp;
i=s;
j=t;
rp=rs;
while(i=rp)j-;
ri=rj;
while(i #define MAXLEN 8 void main()/ 一趟快速排序 , 将基准记录移到正确位置/ 基准记录暂存 rp 中/ 从序列的两端交替向中间扫描/ 扫描比基准记录小的位置/ 将比基准记录小的数据移到低端/ 扫描比基准记录大的位置/ 将比基准记录大的数据移到高端/ 基准记录到位/ 快速排序递归算法/ 长度达于 1/ 调用一趟快速排序算法将rs.rt 一分为二/对 。

【算法|算法设计与分析-学习版】6、低端子序列递归排序 , k是支点位置/对高端子序列递归排序,MAXLEN);
nn);
产生第 1列数据产生第 2列数据产生奇数行的第 2列的数据产生偶数行的第 2列的数据 int i,j;
int xMAXLEN+1MAXLEN+1=0;
/ / 数组清零for (i=1;
i# define LENGTH 10void main() int i,j,k,temp;
int rLENGTH;
for (i=0;
irj+1)/ 若相邻两记录的关键字逆序 ,k+;
/ 则互相交换 temp=rj;
rj=rj+1;
rj+1=temp;
if (k=O)/ 说明该趟没有发生交换break;
/ 跳出该层循环for(i= 。

7、O;
i#include #define N 1OOvoid main() int i,j,k,x,y,sieve_AN+1,sieve_BN+1,sieve_CN+1;
scanf(%d,&x);
y = x;
if(x#include int number;
/ number 为全局变量void prime( int x) int i,k;
k=sqrt(x);
for (i=2;
ik)/表示X未被2 - sqrt(x)中的任何一个整数整除 printf(%7d,x);
/ 因此 , X是素数!number+;
void main() int i,k,x,begin,end;
scanf(%d%d,&begin,&end);
/ 输入一个区间的开始值和终止值if (begin=1 | begin0 | end0)return;
/输入的区间的开始值和终止值出错for (x=begin;
x=end;
x+) prime(x);
/输出所有素数合并排序 。


    来源:(未知)

    【学习资料】网址:/a/2021/0201/0021260576.html

    标题:算法|算法设计与分析-学习版


    上一篇:高端商务礼仪课程大纲|《高端商务礼仪课程大纲》

    下一篇:职业生涯|职业生涯发展目标与措施(职业生涯规划设计)ppt课件