中级软件设计师复习手抄(3)

来源:互联网 发布:sql数据库表修复 编辑:程序博客网 时间:2024/04/28 06:41

算法与设计

矩阵的压缩存储:

1. 三对角矩阵中非零元素aij按照行优先存储在一维数组B[1…N]中(此时数组下标均从1开始),则i,j,k对应的关系式为:

    k=2i+j-2(1<=i,j<=n ) 若数组下标从0开始,则K=2i+j-3;

2. 对称矩阵的压缩存储对应表达式为:

    k=i(i-1)/2+j-1  当i>=j

    k=j(j-1)/2+i-1  当i<j

3. 稀疏矩阵的压缩存储有:三元组表示法 以及 十字链表法(对每行每列设一个单链表记录下非零值);

4. 所谓的静态链表就是在那些不能用指针的语言里用数组建立链表并用一个下标来维护下一个元素的位置。插入删除并不移动元素。

5. 树的双亲表示法采用数组来存放数据元素,及其双亲所在的位置。

6. 散列存储(HASH)查找;

排序:

1. 稳定的排序算法:直接插入、冒泡排序、归并排序、基数排序;

2. 不稳定的算法:    简单选择、希尔排序、快速排序、堆排序;

希尔排序又称为缩小增量排序;简单选择排序,将后续所有元素与第一元素比较,使第一元素最大(小),然后对第二以及后续元素进行类似操作。移动次数比冒泡少,比较次数相同。

基数排序:整数型 由个位数大小将关键字排序,再由十位数排序,再根据更高直到更高数位进行排序。不需要进行排序码的比较,进行部分位的比较。

归并排序与快速排序都属于分治法的应用。大化小,小化更小。

两路归并,有序的两两组合进行排序,直到全部有序。

快速排序:选择一个KEY;

由后向前找到第一个小于KEY的数,与KEY交换位置;

再由前向后找到第一个大于KEY的数,与KEY交换位置;

继续执行,直到首指针与尾指针碰头,这样完成一趟排序。

贪心法,不追求整体的最优解,只根据当前基础做出追求较为满意的解。应用于:最小生成树、最短路径、霍夫曼,还有背包问题。

原创粉丝点击