赞
踩
void rotate(int* nums, int numsSize, int k) { if (numsSize < k)//当要移动的数字长度大于数组长度 { while (numsSize < k) { k = k - numsSize; } } int i = 0; int j = numsSize - 1; for (; i < j; i++, j--)//将整个数组逆置 { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } i = 0; j = k - 1; for (; i < j; i++, j--)//逆置前k个数组长度 { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } i = k; j = numsSize - 1; for (; i < j; i++, j--)//逆置后numsSize-k个数组长度 { int tmp = nums[i]; nums[i] = nums[j]; nums[j] = tmp; } } int main() { int str[] = { 1,2,3,4,5,6,7,8,9 }; rotate(str, sizeof(str) / sizeof(str[0]), 5); for (int i = 0; i < sizeof(str) / sizeof(str[0]); i++) { printf("%d", str[i]); } return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。