65,186
社区成员




void fun(const int array[], const int size)
{
int start = 1;
int pos = 1;
int count = 0;//O(N): N-2
int temp; //O(1)就是这里
while(count < size-2)
{
while(start对应值所在新位置的值 != pos对应值所在新位置的值) //有点拗口 呵呵自己去计算吧 很简单的
{
temp = pos对应值所在新位置的值;
array[pos对应值所在新位置] = array[pos];
count ++;
}
start += 2;
pos = start;
}
}
public static void test(int[] arr, int size) {
int temp = arr[size / 2];
for (int i = size / 2; i != 1;) {
arr[i] = arr[(i + (i % 2) * (size - 1)) / 2];
// 奇数加(数组长度-1)除以2 偶数直接除以2
i = (i + (i % 2) * (size - 1)) / 2;
}
arr[1] = temp;
}