| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 237 人关注过本帖
标题:数据结构题目
只看楼主 加入收藏
krisdei
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2018-4-6
结帖率:50%
  已结贴   问题点数:10  回复次数:4   
数据结构题目
设a[ ] 的初值为(919,527,9,768,22,649)

a[0]为临时工作单元。分析如下程序段:



for (i=0,d=1;i<k; i++,d*=r)

  {

     for ( j=0; j<r; j++)  count[j]=0;  //初始化

     for( j=0; j<n; j++)  count[ a[j] / d % r]++;

      //统计各队列中的记录个数

     for ( j=1; j<r; j++)  count[j]=count[j-1]+count[j]; //分配

     for( j=n-1; j>=0; j--)  b[--count[a[j] / d % r]]=a[j]; //收集

     for( j=0; j<n; j++)  a[j]=b[j];

  }

注: d — 1为个位,10为十位,…

     k — 整数的最大位数;

     r — 数值的基数(如八进制数,十进制数等);

     n —关键字个数。

(1)当i=0、1、2时,分别给出循环体执行完后a[ ] 的值。

(2)说明该程序段的功能。

(3)编程实现以上程序段,并验证分析结果(1)。

(4)分别生成20个不超过3位的无符号整数,包括正序、逆序及随机,执行以上程序段,并验证分析结果。


》》》》》》》》》》》》》》》》》》》》》》
大神赐教 这是结课作业 求全部过程
2018-05-15 16:04
九转星河
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:长长久久
等 级:版主
威 望:49
帖 子:4937
专家分:13916
注 册:2016-10-22
  得分:10 

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-05-15 16:07
krisdei
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2018-4-6
  得分:0 
网址里的基数排列在vc++6.0里运行不了
2018-05-15 16:46
九转星河
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:长长久久
等 级:版主
威 望:49
帖 子:4937
专家分:13916
注 册:2016-10-22
  得分:0 
回复 3楼 krisdei
起码给出一个完整的代码以及遇到的编译问题才好说嘛~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-05-15 18:27
九转星河
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:长长久久
等 级:版主
威 望:49
帖 子:4937
专家分:13916
注 册:2016-10-22
  得分:0 
大意就是说先统计各位数的数字然后再分配每个桶的空间~

for ( j=0; j<r; j++)  count[j]=0;  //初始化

这个初始化应该可以放到for循环外面吧~
因为第一次循环完后count数组已经取出所有元素,也就是说已经清空为0了~

还有,对于unsigned int,获取K其实也有一种通用的方法,就是先遍历一次找出最大值,然后再统计最大值的位数,这个代码完全可以在初始化的时候补上~

[此贴子已经被作者于2018-5-15 18:58编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2018-05-15 18:48







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026961 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved