c语言算法:把数组从[1, 2, 3, 4, 5, 6, 7, 8, 9]变为[4, 5, 6, 7, 8, 9, 1, 2, 3]
时间: 2023-09-30 14:04:19 浏览: 52
可以使用数组翻转和数组拼接的方式实现。
具体步骤如下:
1. 将数组从中间分成两部分,即[1, 2, 3, 4]和[5, 6, 7, 8, 9]。
2. 分别翻转这两个数组,得到[4, 3, 2, 1]和[9, 8, 7, 6, 5]。
3. 将这两个翻转后的数组拼接起来,得到[4, 3, 2, 1, 9, 8, 7, 6, 5]。
4. 再次翻转整个数组,得到[5, 6, 7, 8, 9, 1, 2, 3, 4],即为所求。
代码实现如下:
```
#include <stdio.h>
void reverse(int arr[], int start, int end) {
while (start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int length = sizeof(arr) / sizeof(int);
int mid = length / 2;
// 翻转左半部分
reverse(arr, 0, mid - 1);
// 翻转右半部分
reverse(arr, mid, length - 1);
// 整体翻转
reverse(arr, 0, length - 1);
// 输出结果
for (int i = 0; i < length; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:`5 6 7 8 9 1 2 3 4`。
阅读全文