最近有个小小的想法,和题目一样,我有一个数组,这个数组很大,我不能修改原数组,也不能拷贝,我要得到一个数组,对应这个数组每个元素是这个数组的第几大。
做法其实简单,我们使用游标,在我们的原数组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 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。