
2楼的方法应该是最简洁的,但是并不是最快的。因为这里是要求“最大值”,所以,其实可以借助Sort和Ordering的默认算法——快速排序:
l=RandomReal[1,{103}];
Position[#,Max@#]&@l//AbsoluteTiming
With[{d=Dimensions@l//Rest},{1+Quotient[#,d],Mod[#,d]}&@Last@Ordering[Flatten@l,-1]]//AbsoluteTiming
(*{2.260000,{{465,437}}}*)
(*{0.091000,{{465},{437}}}*)
要推广到高维也是可以的:
l=RandomReal[1,{102,100}];
Position[#,Max@#]&@l//AbsoluteTiming
Reap[FoldList[(Sow@Mod[#,#2];1+Quotient[#,#2])&,Last@Ordering[Flatten@l,-1],Dimensions@l//Reverse];][[-1,1]]//Reverse//AbsoluteTiming
l=RandomReal[1,{103}];
Position[#,Max@#]&@l//AbsoluteTiming
With[{d=Dimensions@l//Rest},{1+Quotient[#,d],Mod[#,d]}&@Last@Ordering[Flatten@l,-1]]//AbsoluteTiming
(*{2.260000,{{465,437}}}*)
(*{0.091000,{{465},{437}}}*)
要推广到高维也是可以的:
l=RandomReal[1,{102,100}];
Position[#,Max@#]&@l//AbsoluteTiming
Reap[FoldList[(Sow@Mod[#,#2];1+Quotient[#,#2])&,Last@Ordering[Flatten@l,-1],Dimensions@l//Reverse];][[-1,1]]//Reverse//AbsoluteTiming
