数组循环移位问题

数组循环移位问题

数组逆序

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);
}
posted @ 2015-12-07 11:36  WONDERFUL_cnblogs  阅读(141)  评论(0编辑  收藏  举报