今日学习札记——数据结构基础(11.7)
2015-11-07 16:32
621 查看
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
![](https://img-blog.csdn.net/20151107175759678?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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.
![](https://img-blog.csdn.net/20151107175804299?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
8. 递归
(1)f(1)=1, f(2)=6, f(3)=21, f(4)=58
![](https://img-blog.csdn.net/20151107175811225?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(2)factorial(阶乘)function f(n)=n!
![](https://img-blog.csdn.net/20151107175816354?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(3)Fibonacci number
![](https://img-blog.csdn.net/20151107175820788?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(4)求数列和
![](https://img-blog.csdn.net/20151107175825181?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(5){a,b,c}:abc, acb, bac, bca, cab, cba 置换n个元素需要n!次
(6)Hanoi汉诺塔问题
![](https://img-blog.csdn.net/20151107175829482?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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); } }
相关文章推荐
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#数据结构揭秘一
- 数据结构之Treap详解
- JavaScript数据结构和算法之图和图算法
- Java数据结构及算法实例:冒泡排序 Bubble Sort
- Java数据结构及算法实例:插入排序 Insertion Sort
- Java数据结构及算法实例:考拉兹猜想 Collatz Conjecture
- java数据结构之java实现栈
- java数据结构之实现双向链表的示例
- Java数据结构及算法实例:选择排序 Selection Sort
- Java数据结构及算法实例:朴素字符匹配 Brute Force
- Java数据结构及算法实例:汉诺塔问题 Hanoi
- Java数据结构及算法实例:快速计算二进制数中1的个数(Fast Bit Counting)
- java数据结构和算法学习之汉诺塔示例
- Java数据结构及算法实例:三角数字
- Java数据结构之简单链表的定义与实现方法示例
- 数据结构之AVL树详解
- qqwry.dat的数据结构图文解释第1/2页
- JavaScript中数据结构与算法(五):经典KMP算法