认知算法(二)

简介: 认知算法(二),一起来学习吧。

​嗨,欢迎来到异星球,我是小怪同志。这篇文章主要讲认识算法,请一起学习吧。

一、算法的特性

算法有许多特性:

(1)有穷性:算法是有若干条指令组成的有穷序列,总是在执行若干次后结束,不可能永不停止。

(2)确定性:每条语句都有确定的含义,无岐义。

(3)可行性:算法在当前环境条件下可以通过有限次运算来实现。

(4)输入/输出:有零个或多个输入以及一个或多个输出。

二、算法的分类

算法可大致分为基本算法、数据结构的算法、数论与代数算法、计算几何的算法、图论的算法、动态规划以及数值分析、加密算法、排序算法、检索算法、随机化算法、并行算法,厄米变形模型,随机森林算法。

算法可以宏泛的分为三类:

(1)有限的,确定性算法 这类算法在有限的一段时间内终止。他们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入值。

(2)有限的,非确定算法 这类算法在有限的时间内终止。然而,对于一个(或一些)给定的数值,算法的结果并不是唯一的或确定的。

(3)无限的算法 是那些由于没有定义终止定义条件,或定义的条件无法由输入的数据满足而不终止运行的算法。通常,无限算法的产生是由于未能确定的定义终止条件。

三、选择排序

1.选择排序
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。

2.算法思路
(1)在未排序序列中找到最小(大)的元素,存放到排序序列的起始位置。

(2)从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

(3)以此类推,直到所有元素均排序完毕。

3.算法分析
假如现在有十个元素进行选择排序,从小到大排

十个元素分别是:10  9  8  7  6  5  4  3  2  1

十个元素下标是:0  1  2  3  4  5  6  7  8  9

10   9     8    7     6     5     4     3    2     1  

1    10    9    8     7     6     5     4    3     2

1     2     10  9     8     7     6     5     4     3

1     2     3    10   9    8    7   6    5   4

1     2     3     4     10   9     8     7    6     5

……

1     2     3     4     5     6     7     8     9    10

4.具体代码  

include<stdio.h>

int main()
{

//定义的一个数组 
int arr[10]; 
 printf("请输入十个数:\n");
  //定义的一个临时变量用来作交换空间 
int temp=0;
 //最小值的下标 
 int mindex;
  //找了几趟的趟数   10个数找9趟
 for (int i = 0; i <10; i++)
 {
     scanf("%d", &arr[i]);
 }
 for (int i = 0; i < 9; i++)
 {
     //假设第一个数就是最小值
     mindex = i;
      //待排序的最小值
     for (int j = i +1 ; j < 10; j++)
     {
         //交换mindex和待排序的第一个值
         if (arr[j]<arr[mindex])
         {
             mindex = j;
         }
         
     }
    temp = arr[i];
      arr[i] = arr[mindex];
     arr[mindex] = temp;
 }
printf("排序后的顺序是:\n");
 for (int i = 0; i < 10; i++)
 {
     printf("%d ", arr[i]);    
 }
 return 0;     

}

相关文章
|
小程序 JavaScript
【微信小程序】之顶部选项卡自定义tabs(不用mp-tabs扩展组件,太难用了)
【微信小程序】之顶部选项卡自定义tabs(不用mp-tabs扩展组件,太难用了)
|
存储 弹性计算 算法
倚天产品介绍|倚天ECS加速国密算法性能
倚天ECS是阿里云基于平头哥自研数据中心芯片倚天710推出arm架构实例,采用armv9架构,支持SM3/SM4指令,可以加速国密算法性能。本文基于OpenSSL 3.2和Tongsuo 实测对比了倚天ECS g8y实例和Intel g7 实例国密性能。为用户选择ECS提供参考。
|
机器学习/深度学习 算法 安全
密码学系列之六:公钥密码体制
密码学系列之六:公钥密码体制
|
安全 算法 网络安全
一文读懂 RSA 加密:非对称加密的基石
RSA是应用最广泛的非对称加密算法,由Rivest、Shamir和Adleman于1977年提出。它基于大数分解难题,使用公钥加密、私钥解密,解决密钥分发问题,广泛用于HTTPS、数字签名等安全通信场景,是现代网络安全的基石之一。
756 0
|
10月前
|
存储 算法 安全
.NET 平台 SM2 国密算法 License 证书生成深度解析
授权证书文件的后缀通常取决于其编码格式和具体用途。本文档通过一个示例程序展示了如何在 .NET 平台上使用国密 SM2 算法生成和验证许可证(License)文件。该示例不仅详细演示了 SM2 国密算法的实际应用场景,还提供了关于如何高效处理大规模许可证文件生成任务的技术参考。通过对不同并发策略的性能测试,开发者可以更好地理解如何优化许可证生成流程,以满足高并发和大数据量的需求。 希望这段描述更清晰地传达了程序的功能和技术亮点。
1136 14
.NET 平台 SM2 国密算法 License 证书生成深度解析
|
8月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1557 28
|
Web App开发
如何设置谷歌浏览器在新窗口中打开链接?如何设置谷歌浏览器在新标签页中打开链接?
一、快捷键方式:  1、左键单击 ==》 在当前窗口中打开目标网页。  2、Shift + 左键单击 ==》 在新窗口中打开目标网页。  3、Ctrl + 左键单击 ==》 在新标签页中打开目标网页。  4、鼠标中键点击书签即打开新的标签页,在新的标签页中显示指定的网页。
59527 0
|
机器学习/深度学习 自然语言处理 并行计算
[Bert]论文实现:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
[Bert]论文实现:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
557 1
|
算法 安全 物联网
关于SM2、SM3、SM4、SM9这四种国密算法
本文介绍了四种国密算法——SM2、SM3、SM4和SM9。SM2是一种基于椭圆曲线的非对称加密算法,用于数据加密和数字签名;SM3是哈希算法,用于数字签名和消息完整性验证;SM4是对称加密算法,用于数据加密和解密;SM9是基于标识的非对称密码算法,适用于物联网环境中的数据安全和隐私保护。
8834 0
|
机器学习/深度学习 算法 PyTorch
深入理解PyTorch自动微分:反向传播原理与实现
【4月更文挑战第17天】本文深入解析PyTorch的自动微分机制,重点讨论反向传播的原理和实现。反向传播利用链式法则计算神经网络的梯度,包括前向传播、梯度计算、反向传播及参数更新。PyTorch通过`autograd`模块实现自动微分,使用`Tensor`和计算图记录操作历史以自动计算梯度。通过示例展示了如何在PyTorch中创建张量、定义计算过程及求梯度。掌握这些有助于提升深度学习模型的训练效率。
1033 1

热门文章

最新文章