排序和查找总结

–排序(sort)

将无序的数据安装特定的规则排成有序数据(升序、降序)

常见的排序算法,有十几种,比较多,有些非常抽象。

– 冒泡排序:

--算法原理:

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2.对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
3.针对所有的元素重复以上的步骤,除了最后一个。
4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

在这里插入图片描述
–代码实现:
在这里插入图片描述

–优缺点:

--优点:比较简单,空间复杂度较低,是稳定的;
--缺点:时间复杂度太高,效率慢;

–选择排序

--算法原理:
	随机确定一个标志位(一般为第一个数字)作为最小数,然后向后遍历,找到比标志位更小的数便与标志位互换位置并更新最小数,
--实现步骤为:
	1.将数组的第一个数字设置为标志位最小数并记录最小数下标。
	2.向后遍历,发现更小数后将该数与标志位互换位置并更新最小数与最小数下标。
	3.循环完成排序

在这里插入图片描述
–代码实现:
在这里插入图片描述
–算法原理

--将一个记录插入到已排好序的序列中,从而得到一个新的有序序列(将序列的第一个数据看成是一个有序的子序列,然后从第二个记录逐个向该有序的子序列进行有序的插入,直至整个序列有序)
--算法步骤:
	1.从第一个元素开始,该元素可以认为已经被排序;
	2.取出下一个元素,在已经排序的元素序列中从后向前扫描;
	3.如果该元素(已排序)大于新元素,将该元素移到下一位置;
	4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置(如果待插入的元素与有序序列中的某个元素相等,待插入元素插入到相等元素的前后皆可。);
	5.将新元素插入到该位置后;
	6.重复步骤2~5。

在这里插入图片描述

–代码实现:
在这里插入图片描述

–二分查找(折半查找):

针对于有序的序列,可以直接查找中间值

–算法原理:

将数组分为两份,首先取出中间值,判断查找值是否等于中间值,如果等于,则直接返回,否则将数组以中间值为分割线进行分割,再判断查找值和中间值的大小关系,如果查找值小于中间值,则从 中间值前面的数组中查找(不包括中间值,因为已经做过比较了),否则从后面的数组中查找,递归实现全部查找,如果最后没有找到,在循环外返回找不到即可!

在这里插入图片描述

–代码实现:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值