C语言空间算法之小试牛刀

95 阅读1分钟

将一维数组a中的n个数逆序存放到原数组中\color{#0d9bed}{将一维数组a中的n个数逆序存放到原数组中}

算法一,t为临时空间,空间复杂度为 S(n) = O(1) 原地工作

#include <stdio.h>
int main(void) {
  int n = 6, t = 0, a[] = {1, 2, 3, 4, 5, 6};
 
  for (int i = 0; i < n / 2; i++) {
    t = a[i];
    a[i] = a[n - i - 1];
    a[n - i - 1] = t;
  }

  return 0;
}

算法二,b为临时空间,空间复杂度为 S(n) = O(n)

#include <stdio.h>
int main(void) {
  int n = 6,  a[] = {1, 2, 3, 4, 5, 6};
  int b[6];
  for (int i = 0; i < n; i++) {
    b[i] = a[n - i - 1];
    for (int i = 0; i < n; i++) {
      a[i] = b[i];
    }
  }
  return 0;
}