C语言指针实现数组折半交换
C语言指针实现数组折半交换
本程序使用 C 语言指针实现数组折半交换,即将数组前半部分与后半部分交换位置。
解题思路:
题目要求实现指针折半交换,即将数组前半部分与后半部分交换位置。可以使用指针进行实现,定义两个指针分别指向数组前半部分和后半部分,然后交换指向的值即可。
时间复杂度: O(n)
C语言代码:
#include <stdio.h>
void fun(int *p, int n) {
int *p1 = p;
int *p2 = p + n - 1;
int temp;
while (p1 < p2) {
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
int main() {
int a[10], n, i;
int *p = a;
printf("请输入n及n个数组元素:\n");
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
fun(p, n);
printf("折半交换的结果:\n");
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
样例输入:
5 1 2 3 4 5
样例输出:
5 4 3 2 1
解释:
程序首先定义两个指针 p1 和 p2,分别指向数组 a 的首元素和末尾元素。然后使用 while 循环遍历数组,交换 p1 和 p2 指向的值,并同时移动 p1 和 p2 指针,直到 p1 指针大于 p2 指针。
最终,程序将数组 a 的前半部分和后半部分交换位置,并输出交换后的结果。
原文地址: https://www.cveoy.top/t/topic/oduO 著作权归作者所有。请勿转载和采集!