认知算法(一)

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

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

一、算法是什么

算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间,空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度和时间复杂度来衡量。

在计算机中,我们一听算法,可能觉得头大,觉得很难,其实算法在我们日常生活中是普遍存在的。比如我们日常生活的吃穿住行所花费的时间都来源于算法,再比如我们领快递所需要的时间,做核酸所需要的时间,等核酸结果所需要的时间等,都属于算法。

二、算法有什么用

 随着计算机的发展,算法在计算机方面已有广泛的发展及应用,如用随机森林算法来进行头部姿势的估计,用遗传算法来解决弹药装载问题,使用信息加密算法进行网络传输,使用并行算法进行数据挖掘   ,以及协同过滤算法在个性化推荐中的应用等 。

可能上述的很难以理解,那么用通俗的话来讲,算法可以帮助你用更加简洁的方式去计算,去做题,去完成生活中一些很难懂的事情。

三、冒泡排序

1.算法思路
(1)比较相邻的元素,如果第一个比第二个大,就交换它们两个,也就是两两对比。

(2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

(3)针对所有的元素重复以上的步骤,除了最后一个。

(4)持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

2.算法分析
假如现在有十个元素进行冒泡排序,从小到大排

十个元素分别是: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

9  10  8  7  6  5  4  3  2  1

9  8  10  7  6  5  4  3  2  1 

9  8  7  10  6  5  4  3  2  1

9  8  7  6  10  5  4  3  2  1

……

9  8  7  6  5  4  3  2   1  10

第二趟排序

9  8  7  6  5  4  3  2  1  10

8  9  7  6  5  4  3  2  1  10

8  7  9  6  5  4  3  2  1  10

8  7  6  9  5  4  3  2  1   10

8  7  6  5  9  4  3  2  1   10

……

8  7  6  5  4  3  2  1  9  10

根据冒泡排序可知

10个元素,要进行9趟冒泡排序。

若n个元素,则进行n-1趟冒泡排序。

第一趟 10个元素→9对

第二趟  9个元素→8对

第三趟  8个元素→7对

·····

3.具体代码

include <stdio.h>

void bubble_sort (int arr[],int sz)
{

// 确定冒泡排序的趟数 sz-1趟 
int i=0;
for (i=0;i<sz-1;i++)
{
//每一趟冒泡排序对比次数 sz-1-i次 
    int j=0;
    for(j=0;j<sz-1-i;j++)
    {
        //每一趟冒泡排序 从小到大排序 
        if(arr[j]>arr[j+1])
        {
            //将对比的元素进行交换 
            int tmp =arr[j];
            arr[j]=arr[j+1];
                        arr[j+1]=tmp;             
        }
    }
}

}
int main ()

{int arr[]={9,8,7,6,5,4,3,2,1,0};
//数组的下标是从0开始的0~9 
int i=0;
     int sz=sizeof(arr)/sizeof(arr[0]); 

//sz计算整个数组的大小,整体就是计算元素个数 //对arr进行排序,从小到大排序
//arr是数组,我们对数组进行传参,实际上传递过去的是数组arr首元素的地址&arr【0】

bubble_sort(arr,sz);  //冒泡排序函数 
for (i=0;i<sz;i++)
{
    printf("%d",arr[i]);    
}
return 0;

}

相关文章
|
6月前
|
机器学习/深度学习 算法 搜索推荐
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
148 0
【高效率学习】探索最适合你的学习之路:从心理学、动机到教育学的深度解析
|
6月前
|
安全 测试技术
认识-认知
认识-认知
101 0
|
机器学习/深度学习 人工智能 算法
如何解释AI做出的决策?一文梳理算法应用场景和可解释性(2)
如何解释AI做出的决策?一文梳理算法应用场景和可解释性
163 0
|
机器学习/深度学习 人工智能 自然语言处理
如何解释AI做出的决策?一文梳理算法应用场景和可解释性(1)
如何解释AI做出的决策?一文梳理算法应用场景和可解释性
402 0
|
Kubernetes 负载均衡 网络协议
K8S 的新认知与初领会
我们今天开始正式进⼊ Kubernetes 的课程学习,Kubernetes 相信各位已经听过很多次了,那么什么是 Kubernetes呢?
K8S 的新认知与初领会
|
存储 算法 搜索推荐
认知算法(三)
认知算法(三),一起来学习吧。
认知算法(三)
|
算法 JavaScript 前端开发
认知算法(九)
认知算法(九),一起来学习吧。
|
算法 搜索推荐 索引
认知算法(七)
认知算法(七),一起来学习吧。
|
算法 搜索推荐
认知算法(十)
认知算法(十),一起来学习吧。
认知算法(二)
认知算法(二),一起来学习吧。