当前位置:首页 » 操作系统 » 计算机算法分类

计算机算法分类

发布时间: 2023-05-21 00:46:27

① 计算机算法的三种基本结构

网络知道
计算机程序的三种基本结构是啥?
yezi1950
TA获得超过22万个赞
关注
成为第1930位粉丝
计算机程序的三种基本结构是:顺序结构、分支结构、循环结构
1、顺序结构:
顺序结构是一个程序从第一行一直运行到最后一行,也就是程序从头到尾运行。
2、分支结构:
分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。
3、循环结构:
一般用于重复某段需要不断重复执行的代码。
共同特点:
① 三种结构都是只有一个入口,一个出口。
② 三种结构内都不存在死循环。

② 什么是算法算法可以分为几种类型

一、算法应该具有的五个特征:

1.有穷性
算法的有穷性是指算法必须能在执行有限个步骤之后终止;

2.确切性
算法的每一步骤必须有确切的定义;

3.输入项
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;

4.输出项
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;

5.可行性
算法中执行的任何肢悄计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。
分类
算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。
二、算法可以宏泛的分为三类:
1.有限的,确定性算法
这类算法在有限的一段时敏镇间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。
2.有限的,非确定算法
这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。
3.无限的算法
是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。

拓展资料:
算法的要素:
一,数据对象的运算和操作:
计算机可以执行的基本操作是以指令的形式描述的。一个计算机系统能执行的所有指令的集合,成为该计算机系统的指令系统。一个计算机的基本运算和操作有如下四类:
1,算术运算:加减乘除等运算
2,逻辑运算:或、且、非等运算
3,关系运算:大于、小于、等于、不等于等运算
4,数据传输:输入、输出、赋值等运算[1]
二,算法的控制结构:
一个算法的功能结构不仅取决于所选用的操作,而且还与各操桥饥粗作之间的执行顺序有关。

③ 计算机常用算法有哪些

贪心算法,蚁群算法,遗传算法,进化算法,基于文化的遗传算法,禁忌算法,蒙特卡洛算法,混沌随机算法,序贯数论算法,粒子群算法,模拟退火算法。
模拟退火+遗传算法混合编程例子:
http://..com/question/43266691.html
自适应序贯数论算法例子:
http://..com/question/60173220.html

④ 计算机算法的三种基本结构

算法有顺序结构、条件分支结构、循环结构三种基本逻辑结构。

1、顺序结构

序贯结构是最简单的算法结构,在语句之间、框之间自上而下进行。它由依次执行的几个处理步骤组成。

它是任何算法都不能缺少的基本算法结构。方框图中的顺序结构是将程序框从上到下与流水线连接,按顺序执行算法步骤。

2、条件分支结构

条件结构是指通过判断算法中的条件,根据条件是否为真来选择不同流向的算法结构。

如果条件P为真,则选择执行框A或框B。无论P条件是否为真,只能执行A盒或B盒中的一个。不可能同时执行盒子A和B,盒子A和B不执行也是不可能的。一个判断结构可以有多个判断框。

3、循环结构

在某些算法中,经常会出现某一处理步骤按照某一条件从某一地点重复执行的情况。这就是循环结构。重复执行的处理步骤是循环体,显然,循环结构必须包含条件结构。循环结构又称重复结构,可分为两类:

一种是当循环结构,功能是P时形成时给定的条件下,执行一个盒子,一个盒子在执行后,确定条件P,如果仍然设置和执行一个盒子,等等来执行一个盒子,直到一个条件P并不不再执行一个盒子,这个时候离开循环结构。

另一种类型是直到型循环结构,作用是先执行,然后判断给定条件P是否为真。如果P仍然不为真,将继续执行盒子A,直到给定条件P为真一段时间。

(4)计算机算法分类扩展阅读:

共同特征

1、只有一个入口和出口

2、结构的每个部分都有执行的机会,即对于每个盒子,应该有一个从入口到出口的路径。如图A所示,从入口到出口没有经过它的路径,这是不符合要求的算法结构。

3、结构中不存在死循环,即没有结束循环。

⑤ 计算机算法有哪些

计算机算法指的是编程的时候,我们有各种不同的程序,不同的应用,有不同的算法,这个算法有很多很多

⑥ 什么是算法算法有哪些分类

分类算法是在数学和计算机科学之中,算法为一个计算的具体步骤,常用于计算、数据处理和自动推理。

精确而言,算法是一个表示为有限长列表的有效方法。算法应包含清晰定义的指令用于计算函数,算法分类可以根据算法设计原理、算法的具体应用和其他一些特性进行分类。



具体意义:

如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。

算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。

⑦ 计算机程序语言包括哪几个基本算法

冒泡排序、选择排序、、插入排序、希尔排序、归并排序、堆排序

Java版代码:

package com.kevin;

/**
* 七种排序算法Java版
*
* @author Administrator
*
*/
public class Sort {

/**
* 打印数组
*
* @param data
*/
public static void displayData(int[] data) {
for (int d : data) {
System.out.print(d + " ");
}
System.out.println();
}

/**
* 冒泡排序算法,时间复杂度O(n2),算法具有稳定性,堆排序和快速排序算法不具有稳定性,即排序后相同元素的顺序会发生变化
*
* @param src
*/
public static void bubbleSort(int[] src) {
if (src.length > 0) {
int length = src.length;
for (int i = 1; i < length; i++) {
for (int j = 0; j < length - i; j++) {
if (src[j] > src[j + 1]) {
int temp = src[j];
src[j] = src[j + 1];
src[j + 1] = temp;
}
}
}
}
}

/**
* 快速排序,时间复杂度O(nlogn),最坏时间复杂度O(n2),平均时间复杂度O(nlogn),算法不具稳定性
*
* @param src
* @param begin
* @param end
*/
public static void quickSort(int[] src, int begin, int end) {
if (begin < end) {
int key = src[begin];
int i = begin;
int j = end;

while (i < j) {
while (i < j && src[j] > key) {
j--;
}
if (i < j) {
src[i] = src[j];
i++;
}
while (i < j && src[i] < key) {
i++;
}
if (i < j) {
src[j] = src[i];
j--;
}
}

src[i] = key;

quickSort(src, begin, i - 1);
quickSort(src, i + 1, end);
}

}

/**
* 选择排序,分为简单选择排序、树形选择排序(锦标赛排序)、堆排序 此算法为简单选择排序
*
* @param a
*/
public static void selectSort(int[] a) {
int length = a.length;
for (int i = 0; i < length; i++) {
int minIndex = i;

for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[minIndex]) {
minIndex = j;
}
}

if (minIndex != i) {
int temp = a[minIndex];
a[minIndex] = a[i];
a[i] = temp;
}
}
}

/**
* 插入排序,适用于少量数据的排序,时间复杂度O(n2),是稳定的排序算法,原地排序
*
* @param a
*/
public static void insertSort(int[] a) {
int length = a.length;

for (int i = 1; i < length; i++) {
int temp = a[i];
int j = i;
for (; j > 0 && a[j - 1] > temp; j--) {
a[j] = a[j - 1];
}
a[j] = temp;
}
}

/**
* 归并排序算法,稳定排序,非原地排序,空间复杂度O(n),时间复杂度O(nlogn)
*
* @param a
* @param low
* @param high
*/
public static void mergeSort(int a[], int low, int high) {
if (low < high) {
mergeSort(a, low, (low + high) / 2);
mergeSort(a, (low + high) / 2 + 1, high);
merge(a, low, (high + low) / 2, high);
}
}

/**
* 归并排序辅助方法,合并
*
* @param a
* @param low
* @param mid
* @param high
*/
private static void merge(int[] a, int low, int mid, int high) {
int[] b = new int[high - low + 1];
int s = low;
int t = mid + 1;
int k = 0;
while (s <= mid && t <= high) {
if (a[s] <= a[t])
b[k++] = a[s++];
else
b[k++] = a[t++];
}
while (s <= mid)
b[k++] = a[s++];
while (t <= high)
b[k++] = a[t++];
for (int i = 0; i < b.length; i++) {
a[low + i] = b[i];
}
}

/**
* 希尔排序的一种实现方法
*
* @param a
*/
public static void shellSort(int[] a) {
int temp;
for (int k = a.length / 2; k > 0; k /= 2) {
for (int i = k; i < a.length; i++) {
for (int j = i; j >= k; j -= k) {
if (a[j - k] > a[j]) {
temp = a[j - k];
a[j - k] = a[j];
a[j] = temp;
}
}
}
}
}

/**
* 堆排序,最坏时间复杂度O(nlog2n),平均性能接近于最坏性能。由于建初始堆所需的比较次数多,故堆不适合记录较少的比较 堆排序为原地不稳定排序
*
* @param array
*/
public static void heapSort(int[] array) {
for (int i = 1; i < array.length; i++) {
makeHeap(array, i);
}

for (int i = array.length - 1; i > 0; i--) {
int temp = array[i];
array[i] = array[0];
array[0] = temp;
rebuildHeap(array, i);
}
}

/**
* 堆排序辅助方法---创建堆
*
* @param array
* @param k
*/
private static void makeHeap(int[] array, int k) {
int current = k;
while (current > 0 && array[current] > array[(current - 1) / 2]) {
int temp = array[current];
array[current] = array[(current - 1) / 2];
array[(current - 1) / 2] = temp;
current = (current - 1) / 2;
}

}

/**
* 堆排序辅助方法---堆的根元素已删除,末尾元素已移到根位置,开始重建
*
* @param array
* @param size
*/
private static void rebuildHeap(int[] array, int size) {
int currentIndex = 0;
int right = currentIndex * 2 + 2;
int left = currentIndex * 2 + 1;
int maxIndex = currentIndex;
boolean isHeap = false;
while (!isHeap) {
if (left < size && array[currentIndex] < array[left]) {
maxIndex = left;
}
if (right < size && array[maxIndex] < array[right]) {
maxIndex = right;
}
if (currentIndex == maxIndex) {
isHeap = true;
} else {
int temp = array[currentIndex];
array[currentIndex] = array[maxIndex];
array[maxIndex] = temp;
currentIndex = maxIndex;
right = currentIndex * 2 + 2;
left = currentIndex * 2 + 1;
}
}
}

public static void main(String[] args) {
int data[] = { 2, -1, 5, 4, 6, 8, 7, -3 };
Sort.displayData(data);

Sort.bubbleSort(data);
Sort.displayData(data);
}

}

⑧ 计算机算法有哪些

一个算法必须具备以下性质: (1)算法首先必须是正确的,即对于任意的一组输入,包括合理的输入与不合理的输入,总能得到预期的输出。如果一个算法只是对合理的输入才能得到预期的输出,而在异常情况下却无法预料输出的结果,那么它就不是正确的。 (2)算法必须是由一系列具体步骤组成的,并且每一步都能够被计算机所理解和执行,而不是抽象和模糊的概念。 (3)每个步骤都有确定的执行顺序,即上一步在哪里,下一步是什么,都必须明确,无二义性。 (4)无论算法有多么复杂,都必须在有限步之后结束并终止运行,即算法的步骤必须是有限的。在任何情况下,算法都不能陷入无限循环中。 一个问题的解决方案可以有多种表达方式,但只有满足以上4个条件的解才能称之为算法。

综上所述,我选A、B、E,个人感觉C也选,但我不确定,希望不要误导你。
最好根据上面的解释或是算法书自己看一下。

⑨ 计算机算法分为哪儿两大类

按计算机的功能分类,一般可分为专用计算与通用计算机。专用计算机功能单一,可靠性高,结构简单,适应性差。但在特定用途下最有效、最经济、最快速,是其他计算机无法替代的。如军事系统、银行系统属专用计算机。 通用计算机功能齐全,适应性强,目前人们所使用的大都是通用计算机。

热点内容
易语言源码怎么保存 发布:2025-04-23 01:36:28 浏览:159
查看应用数据的存储路径 发布:2025-04-23 01:36:18 浏览:382
winformaccess数据库 发布:2025-04-23 01:31:20 浏览:166
免费申请腾讯云服务器 发布:2025-04-23 01:23:12 浏览:731
阿里云上传慢 发布:2025-04-23 01:04:10 浏览:586
我爸电脑配置给别人看没什么事吧 发布:2025-04-23 00:58:54 浏览:723
大学编程课程 发布:2025-04-23 00:48:55 浏览:470
服务器的内网ip有什么用 发布:2025-04-23 00:46:40 浏览:958
诛仙3需要什么配置 发布:2025-04-23 00:29:49 浏览:665
什么是编译错误参数不可选 发布:2025-04-23 00:23:06 浏览:520