中缀表达式转后缀表达式

1.中缀转后缀:就是树里面的中序转后序。

2.队头指针在队尾指针的下一位置时,队满。 Q.front == (Q.rear + 1) % MAXSIZE 因为队头指针可能又重新从0位置开始,而此时队尾指针是MAXSIZE - 1,所以需要求余。
当队头和队尾指针在同一位置时,队空。 Q.front == Q.rear;

 3.前缀编码

二叉树:约定左分支表示字符‘0’,右分支表示字符‘1’,则可以用从根结点到叶子结点的路径上的分支字符串作为该叶子结点字符的编码。如此得到的编码必是前缀编码。

前缀编码,就是哈夫曼编码,也就是二叉树的一种应用,用来压缩,一篇文章里假设各种单词出现次数不同,那么用不同的编码就可以尽量的压缩体积了。如果也是考数据结构的话,那就找找书上哈夫曼编码,在二叉树的应用这一章里。

你甚至没有说选择正确的还是错误的——不过里面就A正确,其他编码都有错误。哈夫曼编码也就是前缀编码要求是尽量减缩某些出现频率高的文字符号的编码,但是必须保证任一字符编码不是另一个字符的前缀——否则会出错的。比如abcd,如果用最后一个编写a=0,b=1,c=00,d=11,那么0011就不知道是aabb还是cd了。而用A编码就不会出现这个问题。

4.希尔排序

 

 
  // 希尔排序
 
                     public static void shellSort(inta[]) {
                            int d= a.length;//gap的值
                            while (true){
                                   d = d/ 2;//每次都将gap的值减半

                                   for (int x = 0; x< d; x++) {//对于gap所分的每一个组
 
                                          for (int i = x+ d; i < a.length; i= i + d) {      //进行插入排序
 
                                                 int temp= a[i];
 
                                                 int j;
 
                                                 for (j= i - d; j>= 0 && a[j] > temp;j = j - d){
                                                        a[j+ d] = a[j];
                                                 }
                                                 a[j+ d] = temp;
 
                                          }
 
                                   }
 
                                   if (d== 1) {//gap==1,跳出循环
 
                                          break;
 
                                   }
 
                            }
 

5.快速排序快速排序 | 菜鸟教程 (runoob.com)

int AdjustArray(int s[], int l, int r) //返回调整后基准数的位置 {

int i = l, j = r; int x = s[l]; //s[l]即s[i]就是第一个坑

while (i < j) { // 从右向左找小于x的数来填s[i]

while(i < j && s[j] >= x) j--;

if(i < j) { s[i] = s[j]; //将s[j]填到s[i]中,s[j]就形成了一个新的坑 i++; } // 从左向右找大于或等于x的数来填s[j]

while(i < j && s[i] < x) i++; if(i < j)

{ s[j] = s[i]; //将s[i]填到s[j]中,s[i]就形成了一个新的坑 j--; } } //退出时,i等于j。将x填到这个坑中。 s[i] = x; return i; }

再写分治法的代码:

void quick_sort1(int s[], int l, int r)

{ if (l < r) { int i = AdjustArray(s, l, r);//先成挖坑填数法调整s[] quick_sort1(s, l, i - 1); // 递归调用 quick_sort1(s, i + 1, r); } }

 6.扩充

扩展方法
先进行位扩展,形成满足位要求的存储芯片组;
再使用存储芯片组进行字扩展。
要求:能够计算出字位扩展所需的存储芯片的数目。
例如:用L×K的芯片构成M×N的存储系统;
所需芯片总数为M/L×N/K 片。

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值