认知算法(一)

14天阅读挑战赛


努力是为了不平庸~
算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算法的理解,同时吸收他人的奇思妙想,一起见证技术er的成长~

嗨,大家好,我是异星球的小怪同志,一个想法有点乱七八糟的菜鸟,请跟我一起学习算法的知识吧。

目录

一、算法是什么

二、算法有什么用

三、冒泡排序

1.算法思路

2.算法分析

扫描二维码关注公众号,回复: 14855025 查看本文章

3.具体代码


一、算法是什么

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

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

二、算法有什么用

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

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

三、冒泡排序

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

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

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;
}

猜你喜欢

转载自blog.csdn.net/weixin_65445097/article/details/127477050