不修改原数组,获得数组每个元素是数组的第几大

最近有个小小的想法,和题目一样,我有一个数组,这个数组很大,我不能修改原数组,也不能拷贝,我要得到一个数组,对应这个数组每个元素是这个数组的第几大。

做法其实简单,我们使用游标,在我们的原数组a,建一个大小和他一样的int,b。

然后b的值就是a的下标

for i=0 to a.Count
    b[i]=i;

然后我们开始做排序,首先b的排序是

 Compare(a[b1],a[b2])

然后我们就b的下标数组,顺序就是a所在元素下标,元素顺序。

如果我们有a 2 6 5 3 7

那么开始b 0 1 2 3 4

然后排序

得到 b 4 1 2 3 0

那么第0是最小,我们可以加一个大小和b一样c

 for i=0 to a.Count
     c[b[i]]=i;

最后c,开始c[4]=0
c[1]=1
c[2]=2
c[3]=3
c[0]=4

c 4 1 2 3 0

对应a的每个元素是数组第几大

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

posted @ 2016-08-25 11:42  lindexi  阅读(89)  评论(0编辑  收藏  举报