“这是Sylu计算机协会的第一个技术论文活动”
在我们当前的生活中,可以在任何地方看到分类。在检查每次考试时,教师将根据成绩排名。
在编程世界中,分类的情况无处不在。在开发电子商务平台时,需要从低至高点进行类似的产品。当开发游戏时,您需要从更多到更少的地方,第一名玩家是该游戏的MVP,依此类推
尽管排序很简单,但背后有多种算法和想法。那么常用的排序算法是什么?我们应该如何选择?让我们介绍主流分类算法。
1.1.1根据时间的复杂性,主流排序算法可以分为三类:
与时间复杂性分类算法是O(nlogn)
与时间复杂性分类算法是O(N + K)
稳定性:如果A最初在B的前面,而A = B进行排序后,A仍在B的前面;不稳定:如果A最初在B前面,而A = B,则A = B后可能会出现在B后面出现;
1.1.3根据是否需要额外的存储空间存储数据,分为内部排序和外部排序
内部排序:所有排序操作都在内存中完成;外部排序:由于数据太大,因此数据放在磁盘中,并且排序的数据传输只能通过磁盘和内存传输;
在每种排序算法的情况下,下表已经很好地总结了。这款手表将贯穿我们所有分类算法的文章。简要介绍一下,让我们正式开始学习!
气泡排序是一种简单的排序算法。它反复访问了排序数量。在列数中,我们必须比较两个或两个相邻元素。当元素大于右侧的相邻元素时,当邻居元素不变时,它们的位置就会是详细的过程。
那么如何实现冒泡分类的代码?
算法分析:气泡分选是一种稳定的排序。相等的元素不会破坏原始顺序。由于排序算法的每一轮都遍历所有元素,并遍历总(数字1)回合,因此平均时间复杂度为O(n 2)。
1.2.1起泡排序的优化
小朋友,想想如何优化起泡排序?让我们看看一个例子。当将排放算法执行至第六轮和第7轮时,状态状态如下:
可以看出,在第六轮分类之后,整个序列已经有序。在这种情况下,如果列的数量已经有序和标记,则不需要执行其余的几轮排序,而工作可以可以提前结束。
第二代冒泡排序代码实现:
1.2.2气泡分类和优化
认为这已经结束了吗?学生们考虑如何进一步改善其表现?让我们看一个例子
与元素4和5相比,发现4小于5,因此位置不变。元素5和6与5进行了比较,发现5小于6,因此位置不变。7,发现6小于7,因此该位置不变。
每个人都可以清楚地发现,当数组中的许多元素已经以有序的方式出现,但是每个回合仍然需要浪费时间进行比较时,我们如何优化?让我们一起分析它:
从现有逻辑中,数组右侧的数字的有序长度等于循环排序的第一轮的数量。例如,第一轮序列后的订购区域的长度为1,并且第二轮分类后的订单长度为2 ...
实际上,数组的实际顺序区域可能大于此长度,因此以后的多个元素毫无意义。
三代起泡的排序代码实现:
1.2.3气泡排序的双重优化(选择)
?啊...最终优化?,您认为这已经结束了,哈哈哈,还有一种称为鸡尾酒排序的分类算法,这是一种基于起泡分类的升级分类方法。
鸡尾酒排序的比较和交换过程是两个方面的示例:[2、3、4、5、6、7、7、1、8]
根据以前的起泡排序算法,我们需要执行7轮分类,?这一次感觉像是一个大的不满,哈哈?,目前正在执行鸡尾酒分类。
在第一轮(例如冒泡排序,8和1交换)
第二轮开始。我们比较从右到左交换。
在第三轮中(尽管实际上是有序的,该过程还没有结束),但是将其从左到右进行比较并交换。排序过程就像钟摆。?我今天是大师,它被更名为摆钟分类?
四代冒泡的排序代码实现
显然,时钟的排序?鸡尾酒排序可以减少排序的回合数,但代码数量增加了一倍。我们将在这里介绍今天的冒泡分类。
下一篇文章:十大消除算法2 ---选择排序和插入排序