C语言实现数组右移的算法
数组的循环右移指将数组向右移动k个单位(k为正整数),且超过数组长度时会将多余的部分继续移到数组头部,形成一个循环移位的效果。本文将以C语言为例,介绍一种简单的算法来实现这个功能。
下面是实现该算法的C语言代码:
#include<stdio.h>
#include<stdlib.h>
void reverse(int *nums, int start, int end) {
while (start < end) {
int temp = nums[start];
nums[start] = nums[end];
nums[end] = temp;
start++;
end--;
}
}
void rotate(int* nums, int numsSize, int k){
if(k %= numsSize){
reverse(nums, 0, numsSize - 1);
reverse(nums, 0, k - 1);
reverse(nums, k, numsSize - 1);
}
}
int main() {
int nums[] = {1, 2, 3, 4, 5};
int numsSize = 5;
int k = 2;
rotate(nums, numsSize, k);