| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 509 人关注过本帖
标题:[求助]怎样将移动次数减至n
只看楼主 加入收藏
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
 问题点数:0 回复次数:3 
[求助]怎样将移动次数减至n

按名次排序
利用元素的名次按照递增的次序对数组中的元素进行排列,使得a[0]<=a[1]<=...<=a[n-1]
各元素的名次在数组r[n]中,例如
一个数组a [4,3,9,3,7]
r 为 [2,0,4,1,3]
用一个附加的数组u
for(i=0; i<n; i++)
u[r[i]]=a[i];
for(i=0; i<n; i++)
a[i]=u[i];
即可完成,移动了2n次,问怎样才能将移动次数减至n ?
大家一起讨论啊,看看有没有什么好的方法

搜索更多相关主题的帖子: 移动 元素 
2006-11-24 11:04
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
这个应该是利用静态链表来排序的.不过好象没看过有O(n)的.

倚天照海花无数,流水高山心自知。
2006-11-24 17:41
perfect
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:81
专家分:0
注 册:2006-11-19
收藏
得分:0 

不是啊,这是对数组a进行排序
数组r中放的是a中各元素的次序
先对数组a动态分配,再用数组u像上面那样,之后删除原来的a数组,再把u赋给指针a
不知道除了这种方法外,还有没有其它的?


片言可以明百意 坐驰可以役万里
2006-11-24 20:53
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
其实是一样的.静态链表是指用下标来指示下个元素的位置.

倚天照海花无数,流水高山心自知。
2006-11-24 21:18
快速回复:[求助]怎样将移动次数减至n
数据加载中...
 
   



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

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