今日学习札记——数据结构基础(11.7)

来源:互联网 发布:c4d r16 mac 注册机 编辑:程序博客网 时间:2024/05/18 01:04
1. Data can divided into two classes:
1)numerical data: int, float, complex,...
2)non-numerical data: character, string, graph, voice,...


2. Data_Structure = {D,R}
- D is a data object
- R is a limited set of relationships of all the data members in D
1)Linear structure 

2)Non-linear structure




3. Data type: Most of the Programming languages provide a group of predefined data type.
1)Atom(原子) data type - int, float, double, ...
2)Structure data type - array, struct, ...
 
4. Abstruct data type:(ADT)
思想:把一个数据类型的表示和在这个类型上的操作实现封装到一个程序模块中,用户可以直接使用它而不必知道它。


5. 简单选择排序
void selectsort(int a[ ],int n)
    {
        for (int i = 0; i < n-1; i++)
        {
            int k = i;
            for ( int j = i+1; j < n; j++)
                if ( a[j] < a[k]) k = j;
            int temp = a[i];
            a[i] = a[k];
            a[k] = temp;
        }
    }
    
6. 对数(所有的算法都是以2为底的)
定义:X^A=B if and only if logxB=A

7. 


8. 递归

(1)f(1)=1, f(2)=6, f(3)=21, f(4)=58


int f(int x){    if(x==0) //base case        return 0;    else return 2*f(x-1)+x*x;//recursive call}

(2)factorial(阶乘)function    f(n)=n!


long factorial(long n){    if(n<=1)        return 1;    else return n*factorial(n-1);}

(3)Fibonacci number


long fib(long n){    if(n==0)        return 0;        else if(n==1)                return 1;    else return fib(n-1)+fib(n-2);}

(4)求数列和


int Rsum(int a[],int n){    if(n>0)        return Rsum(a,n-1)+a[n-1];    return 0;}

(5){a,b,c}:abc, acb, bac, bca, cab, cba  置换n个元素需要n!次

void perm(char[] list, int k, int m){int i;if(k==m){for(i=0;i<=m;i++)cout<<list[i];cout<<endl;}else{for(i=k;i<=m;i++){swap(list[k],list[i]);perm(list, k+1, m);swap(list[k],list[i]);}}}

(6)Hanoi汉诺塔问题


void moveDISKs(int n, char fromTower, char               toTower, char auxTower){    if ( n==1)        cout<<"move disk "<<n<<"from "<<fromTower<<" to"<<toTower<<endl;    else    {        moveDISKs(n-1, fromTower, auxTower, toTower);        cout<<"Move disk "<<n<<"from "<<fromTower<<" to "<<toTower;        moveDISKs(n-1, auxTower, toTower, fromTower);    }}


0 0
原创粉丝点击