110,535
社区成员
发帖
与我相关
我的任务
分享
static void MoveSubArrayToTheEnd(int[] array, int numberOfElements) {
if(numberOfElements <= 0 || numberOfElements >= array.Length) return;
Move(array, 0, numberOfElements, numberOfElements); }
//迭代平移
static void Move(int[] pArray, int pStart, int pMoveLength, int pOffset) {
int _length = pArray.Length;
if (pStart + pMoveLength >= _length) return;
if(pStart + pMoveLength + pOffset > _length) {
pMoveLength = _length - (pStart + pMoveLength);
}
else {
for(int i = pStart; i < pStart + pMoveLength; i++) {
Swap(ref pArray[i], ref pArray[i + pOffset]);
}
pStart = pStart + pMoveLength;
if(pOffset > pMoveLength) pMoveLength = pOffset - pMoveLength;
pOffset = pMoveLength;
}
Move(pArray, pStart, pMoveLength, pOffset);//迭代
}
//元素交换
static void Swap(ref int a, ref int b) {
a += b;
b = a - b;
a = a - b;
//Count++;//计数
}