数组循环移位问题
数组逆序
void reverse(int* array, int sIndex, int eIndex)
{
int tmp;
while (sIndex < eIndex) {
tmp = array[eIndex];
array[eIndex] = array[sIndex];
array[sIndex] = tmp;
sIndex++;
eIndex--;
}
}
循环左移
void left_rotate(int* array, int len, int k)
{
if (NULL == array || 0 >= len || 0 >= k) {
return;
}
k %= len;
if (0 == k) {
return;
}
reverse(array, 0, k - 1);
reverse(array, k, len - 1);
reverse(array, 0, len - 1);
}
循环右移
void right_rotate(int* array, int len, int k)
{
if (NULL == array || 0 >= len || 0 >= k) {
return;
}
k %= len;
if (0 == k) {
return;
}
reverse(array, 0, len - k - 1);
reverse(array, len - k, len - 1);
reverse(array, 0, len - 1);
}