问题:将长度为n的数组的前端k个元素逆序移动到数组后端
- 思路同将长度为n的数组的前端k个元素保持原序移动到数组后端
- 就是将前端的k个元素从头开始和原数组的最后下标进行交换
- 代码如下:
#include <stdio.h>
void Move(int num[], int index, int length) {
int temp;
for (int i = 0, j = length - 1; i < index, j >= length - index; ++i, --j) {
temp = num[i];
num[i] = num[j];
num[j] = temp;
}
}
int main() {
int a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
for (int i = 0; i < 10; ++i) {
printf("%d", a[i]);
}
printf("\n");
Move(a, 4, 10);
for (int i = 0; i < 10; ++i) {
printf("%d", a[i]);
}
return 0;
}