jar*_*ryd 5 sorting objective-c nsmutablearray
我有一个NSMutableArray控股,NSStrings例如{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
我希望能够用包装来移动元素.
因此,例如将1移动到中心,移动所有元素,将剩余的元素(越过边界)包裹起来再次开始,反之亦然,例如10到中心.
{7, 8, 9, 10, 1, 2, 3, 4, 5, 6} 和 {6, 7, 8, 9, 10, 1, 2, 3, 4, 5}
是否存在这样的优化sort方法?
最有效的方法是创建一个包装对象,该对象维护数组的当前“原点”,并通过添加该原点并对长度取模来重新解释索引。事实上,如果仅在少数位置访问数组,则可以通过 1-2 行内联代码轻松完成。
-(id)objectForIndex:(NSInteger) index {
NSInteger realIndex = (origin + index) % array.count;
return [array objectAtIndex:realIndex];
}
Run Code Online (Sandbox Code Playgroud)
(如果它扩展了 NS(Mutable)Array,那么“array”就是“super”。如果只是一个包装器,那么“array”就是一个实例变量。无论哪种情况,“origin”都是一个实例变量/属性。)