题目来源于王道考研-数据结构2023版P31-第08题
算法思想先对两个线性表各自进行翻转,在对整体的数组进行翻转,共三次翻转
实现原理创建一个函数实现翻转功能,在主方法里调用三次翻转函数
代码#include难点typedef int ElemType; void Reverse(ElemType A[], int l, int r) { //左右指针分别始末下标 ElemType temp; //中间变量 for (int i = l; i <= (l + r) / 2; i++) { // >>中间值的确定<< temp = A[i]; A[i] = A[l + r - i]; // 要替换的两个位置的下标相加是定值(l+r) A[l + r - i] = temp; } } int main() { ElemType A[] = { 6,7,8,9,10,1,2,3,4,5,6 }; Reverse(A, 0, 4); Reverse(A, 5, 9); Reverse(A, 0, 9); for (int i = 0; i <= 9; i++) { printf("%d ", A[i]); } return 0; }
本道题难点在于,对于翻转函数的for循环的循环条件的确定
真题考法3)时间复杂度:O(p/2)+O[(n-p)/2]+O(n/2) 所以O(n)
空间复杂度O(1)



