VectorLu

算法实现注意事项

算法问题中需要注意些什么呢?

输入与输出

在写算法时,一定要充分考虑到输入数据的特征、可能存在的问题,还有是否需要保存数据。不要天真地以为输入一定是某种特定的数据类型,大小排列方式……

然后尽量对数据做一些预处理,以免在程序运行中造成一些破坏,举个很简单的例子——求最大公约数和最小公倍数,为了防止第二个输入的数大于第一个数,做了一个判断和交换:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <stdio.h>
int main()
{
int max, min;
int copy1, copy2;
int temp;
printf("请输入两个正整数:\n");
scanf("%d %d", &max, &min);
copy1 = max;
copy2 = min;
// 如果 min > max
// 互换
if (min > max)
{
temp = min;
min = max;
max = temp;
}
while (min != 0)
{
temp = min;
min = max % min;
max = temp;
}
printf("它们的最大公约数为:%d\n", max);
printf("它们的最小公倍数为:%d\n", copy1*copy2/max);
return 0;
}

边界情况

空与满

集合为空或满时,对这个集合操作的所有函数应该如何——抛出异常,工程中考虑到易用性要友善提示等策略。

对象或指针为 null 或相关值时,各个用到该变量的函数应该如何处理。

您的支持将鼓励我继续创作!

热评文章