算法是什么?算法的特性有哪些?详解算法相关知识

网站建设 厦门萤点网络科技 2026-02-03 00:09 38 0
算法()是解决特定问题的求解步骤,在计算机中表现为有限的一组操作,每一个操作都能完成特定的功能。 例如,求 n 个数中最大者的问题,其算法描述如下: 1) 定义一个数组对象 a 并赋值,用数组中第一个元素初始化 max,即初始时假定第一个数...

算法()是解决特定问题的求解步骤,在计算机中表现为有限的一组操作,每一个操作都能完成特定的功能。

例如,求 n 个数中最大者的问题,其算法描述如下:

1) 定义一个数组对象 a 并赋值,用数组中第一个元素初始化 max,即初始时假定第一个数最大。

int a[]={60,36,12,31,78,93,82,26};
max=a[0];

2) 依次把数组 a 中其余的 n-1 个数与 max 进行比较,遇到较大的数时,将其赋值给 max。

for(i=0; i < a.length; i++) // for循环处理
    // 判断是否满足 max 小于 a[i] 的条件
    if(max < a[i])
        // 若满足条件,则将 a[i] 赋值给 max
        max = a[i];
System.out.println("max=:" + max);

最后,max 中的数就是 n 个数中的最大者。

算法的5个特性算法具有以下 5 个特性。

1) 有穷性()有穷性指的是算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。

2) 确定性()算法的每个步骤都具有确定的含义,不会出现二义性。算法在一定条件下只有一条执行路径,也就是相同的输入只能有一个唯一的输出结果。

3) 可行性()算法的每个操作都能够通过执行有限次基本运算完成。

4) 输入(Input)算法具有零个或多个输入。 5) 输出()算法至少有一个或多个输出。输出的形式可以是打印输出,也可以是返回一个或多个值。

算法的描述算法的描述方式有多种,如自然语言、类语言(或称为伪代码)、程序流程图及程序设计语言(如 Java、、C、C++)等。

算法特性详解_算法4有那么好吗_算法描述方法

其中,自然语言描述可以是汉语或英语等文字描述;类语言类似于程序设计语言形式,但是不能直接运行;程序流程图的优点是直观,但是不易直接转化为可运行的程序;采用程序设计语言描述算法,就是直接利用像 Java、、C、C++ 等语言来表述,其优点是可以直接在计算机上运行。

例如,判断正整数 m 是否为质数,算法可用以下几种方式描述。 1) 程序流程图

算法特性详解_算法描述方法_算法4有那么好吗

图 1 判断m是否为质数的程序流程图

采用程序流程图描述算法比较直观,可读性强,缺点是不能直接转换为计算机程序,移植性不好。

2) 自然语言利用自然语言描述“判断m是否为质数”的算法如下: 输入正整数m,令i=2。 若 i≤ m 的平方根,则令 m 对 i 求余,将余数送入中间变量 r;否则输出“m是质数”,算法结束。 判断 r 是否为零。若为零,则输出“m不是质数”,算法结束;若 r 不为零,则令 i 增加 1,转到第二步执行。

不难看出,采用自然语言描述算法直观性和可读性不强。

3) 类语言类 Java 语言描述如下:

void IsPrime() // 判断 m 是否为质数的函数
{
    input(m);  // 输入正整数 m
    for(i=2; i <= sqrt(m); i++) // for循环处理
    {
        r = m % i; // 求余数
        if(r == 0) // 如果 m 能被整除
        {
            print("m不是质数!"); // 输出信息
            break; // 退出循环
        }
    }
    print("m是质数!"); // 输出信息
}

4) 程序设计语言Java 语言描述如下:

// 判断m是否为质数
void IsPrime(){
    Scanner sc = new Scanner(System.in);
    System.out.print("请输入一个正整数:"); // 输出信息
    int m = sc.nextInt(); // 输入正整数m
    for (int i = 2; i <= Math.sqrt(m); i++) // for循环处理
    {
        r = m % i; // 求余数
        if (r == 0) // 如果 m能被整除
        {
            System.out.println("m不是质数!"); // 输出信息
            break; // 退出循环
        }
    System.out.print("m是质数!"); // 输出信息
}

可以看出,类语言的描述除了没有变量的定义、输入和输出的写法外,与程序设计语言的描述差别不大,类语言的描述可以转换为直接运行的计算机程序。