C语言指针实现数组折半交换
题目描述
编写函数 void fun(int *p, int n) 实现 a 数组的折半交换,主函数定义数组 a[10],输入 n 及 n 个数组元素,定义指针 p 指向数组 a,调用函数进行折半交换,输出交换后的结果。
样例
输入
5
1 2 3 4 5
输出
5 4 3 2 1
算法
(指针交换) O(n)
折半交换的意思是把数组的左右两边交换位置。这里我们可以使用指针进行交换。一开始,我们用指针 p 指向数组的第一个元素,用指针 q 指向数组的最后一个元素,然后交换,直到 p>=q 为止。
时间复杂度
显然,时间复杂度为 O(n)。
代码
void fun(int *p, int n) {
int *q = p + n - 1;
while (p < q) {
int t = *p;
*p++ = *q;
*q-- = t;
}
}
int main() {
int a[10];
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
fun(a, n);
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/oduR 著作权归作者所有。请勿转载和采集!