数据结构考试后遗留问题解决

今天刚考完数据结构,考完后觉得有些地方还是没做好,回头想想,当时觉得都理解了,毕竟只考两章的内容考完后才发现有些地方还是没理解完全。

 

算法1:在数组a[1...n]中设置“监视哨”,查找关键字key,成功返回1,否则返回0;

 

 int Search(int a[],int key)

{

      a[0]=key;          //监视哨a[0]

      int i=n;

      while(a[i]!=key)i--;

       return i;           //不管查找成功与否,返回值都是i

}

 

/*一个return 语句就行,当时也怪自己没好好看书,觉得只是这么短短几行挺简单的,就一眼跳了过去;哎~哪知道考试时不晓得“监视哨”的作用了,就写成了一个普通的查找循环了,晕~*/

 

算法2:对数组a[1...n]中给定的小标s用堆排序排列成大顶堆

 

void HeapAdjust(int a[],int s,int n)

{

     for(int i=2*s;i<=n;i=i*2){

                    if(i<n&&a[i]<a[i++])i++;

                    if(a[s]<a[i]){

                              a[0]=a[s];    //若子节点比父节点大,则交换

                              a[s]=a[i];

                               a[i]=a[0];

                               s=i;             //注意这一步,比较后子节点i的值要付给s,使之在一下比较中依然保持s与i的父子节点关系

                       }

            }

}

 

/*当时写到最后的时候,看别人都交卷都差不多了,一时心急,貌似堆调整的时候,小标交换写反了 i=s ?在晕~一次,学习了,不管怎样,心态还是要好啊,fighting~*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值