数组循环移位问题

数组逆序

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);
}

相关文章:

  • 2021-10-16
  • 2021-11-20
  • 2022-12-23
  • 2021-11-20
猜你喜欢
  • 2021-05-29
  • 2021-05-29
  • 2021-08-25
  • 2021-09-07
相关资源
相似解决方案