您的位置:首页 > 理论基础 > 数据结构算法

数据结构-1

2016-02-23 14:57 190 查看
2016/01/29 13:56

一.算法的有穷性

1.序列Hailstone(n)={1} n<=1

{n}UHailstone(n/2) n偶数

{n}UHailstone(3n+1) n奇数

2.Hailstone(42)= {42,21,64,32,...,1}

3.int hailstone(int n){//计算序列Hailstone(n)的长度

int length = 1;//从1开始,一下按定义逐步递推,并累计步数,直至n=1

while(1<n){(n%2)?n=3*n+1:n/=2;length++;}

return length;}

4.Hailstone(7)={7,22,11,34,17,552,26,13,40,20,10,5,16,...,1}

Hailstone(27)={27,82,41,124,62,31,94,47,142,71,214,107,...}

5.对于任意的n,算法总有|Hailstone(n)|<∞?

6.算法的正确性,确定性,可行性,有穷性。并不是所有的程序都是算法,比如上图中的Hailstone(),到目前为止仍然没有发现n使得程序在while()里死循环,但也没有确定所有的n都可以使得程序返回,所以这个程序不一定是算法。

7.循环和级数

for(int i =0;i<n;i++)

for(int j=0;j<i;j+=2013)

o1operation(i,j);

算术级数:...

for(int i= 1;i<n;i<<=1)

for (int j = 0;j<i;j++)

o1operation(i,j);

8.数组倒置

*任意数组A[m,n),将其前后颠倒

统一接口:void reverse(int* A,int lo,int hi);

*递归版

if()//问题规模的奇偶性不变,需要两个递归基

{swap(A[lo],A[hi]);reverse(A,lo+1,hi-1);}

*迭代原始版

next:

if(lo<hi)

{swap(A[lo],A[hi]);lo++;hi++;goto next;}

*迭代精简版

while(lo<hi)swap(A[lo++],A[hi--]);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: