我相信每个人也都看到了水中的冒泡现象。从底部到顶部,气泡将变得越来越大,而SO称为的冒泡排序也基于此原理,即从底部到顶部的一定顺序。
依次比较高级元素。如果第一个要素大于第二个要素,则是交换位置。一轮比较后,最大的要素将“泡泡”到团队的尽头。在那之后,已经排列的元素是不合理的,并且此步骤ISAFTER元素的数量),排序已完成。
气泡排序是一种稳定的排序方法。它的平均时间复杂性是o(n^2),最佳情况的最佳时间复杂性是o(n),最坏的时间复杂性是o(n^2 2),在期间只需要一个元素辅助空间分类过程,即温度,因此空间复杂性为o(1)
在第一轮分类中:与3和6进行比较后,请勿交换6和4交换位置,然后6和2再次与2进行比较,并且仍然需要交换以进行位置,然后继续进行类似的操作。,4、2、6、10、5、11]
第二轮分类:3和4不交换位置交换。目前,我们从上帝的角度发现10是最大的元素,因此目前10将是11的泡沫。结果是[3,2,4,6,5,5,5,5,5,11]
后面的操作相似,直到四轮排序为止,数组变为有序数组
数字如下:
顾名思义,选择排序算法,然后选择两个单词非常重要。这样,其余的数组元素以这种方式选择最小元素。在n -1圆形排序之后,数组变为有序的数组。
选择排序是一种不稳定的排序方法。它的平均时间复杂性为O(n^2)。最好和最坏的情况是O(n^2)。在分类过程中仅需要一个元素。辅助空间,因此空间复杂性为O(1)
第一轮排序:将第一个元素与元素的其余部分进行比较,并找到最小值的较低投标索引。避免到最小,然后与元素7交换,在排序为[1、4、5,9、8、2、7]
第二轮排序:元素4与其剩余的不令人满意的元素进行了比较,最后与2交换了位置。排序后,阵列为[1、2、5、5、9、8、4、7]
之后,为了找到未按顺序排序的最小元素,它最终将成为4发后的有序数组
插入第一个记录时,R0到R1是有序的,因此将NUMS [I]与这些元素进行比较,并找到应插入的位置。插入位置后,元素需要依次向后移动。
默认的第一个元素是顺序的,因此从第二个元素开始,需要比较它以比较向后的元素。此元素较小,然后将元素放在当前元素后面。成功对其进行排序
有点像冒泡的排序吗?
还有第二种类型,但是第二层循环i使用var关键字要声明,由于LET块级别,nums [j + 1] = temp代码将无法访问变量J,因此我使用它来usevar来声明,但这不是有害的。您也可以在这里使用整个循环。网民可以思考自己
插入排序是一种稳定的排序方法。它的平均时间复杂性是O(n^2),最佳情况的最佳时间复杂性是O(n),最坏情况的时间复杂性是O(n^2)在排序过程中,只有一个元素辅助。需要空间,因此空间复杂性为O(1)
默认的第一个元素5是有序的,因此从第二个元素开始,5将与7首先进行比较,然后按Shaldie
希尔的形式也称为“减少增量分类”,这是插入分类算法的改进
首先将整个序列分为多个子序列,然后直接插入到排序中。当整个序列中的记录基本上有序时,然后插入整个序列以一次插入排序
希尔的分类也是一种不稳定的分类方法。它的平均时间复杂性大约是O(n logn ^ 2),大约是O(n ^ 1.3)。不良情况的时间复杂性为O(n ^ 2),在分类过程中仅需要一个元素辅助空间,因此空间复杂性是o(1)
因为这里的数字太小,所以不利于解释,我将更改一个示例
我们将D1 = 5(n / 2),d2 = 3(d1 / 2),d3 = 2(d2 / 2),d4 = 1作为增量排序量,并根据情况将其上下确定。
第一轮排序:根据D1 = 5,组组,9和4是两对,1和28、2和2和6、5和3,然后在此时,有必要比较元素大小,插入排序在每组之间,然后在第一轮分类之后,阵列为[4、1、2、3、5、9、8、6、5、7]
第二轮分类:根据D2 = 3,小组组,然后组为4、3、8、7是一个组,1、5、6和2、9和5组。插入排序后,阵列为[3,1,2,4,5,7,6,6,6,6,8]
第三轮排序:根据D3 = 2,J组,即,相邻元素不是组,3、2、5、7、9是一个组,1、4、5、6、8是一个组和一个组,然后在插入和分类两组之后,阵列为[2,1,3,4,5,5,5,7,6,6,9,8]
在第四轮排序:D4 = 1中,所有序列均已插入和分类,最终结果[1,2,3,4,5,5,6,6,7,8,9]
实际上,实际上没有四轮,只有三轮,只需将其拆除即可。
通过某种形式,要排序的要素分为两个独立的部分,称为上半场和下半部分,其中该地区上半部分的元素不超过该地区下半部分的元素,然后将两个部分迅速排序。因此,整个序列是有序的
连接两个指针变量i和j,指向序列的第一个元素和最后一个元素,将第一个关键字设置为枢轴,从j的位置搜索以找到小于枢轴的第一个元素,然后将元素转向元素向它移动到我指示的位置,从i中所指的位置搜索,并找到大于枢轴的第一个元素以将元素移至J点的位置。
快速分类是一种不稳定的排序方法。它的平均时间复杂性为O(NLOG2 N)。)空间复杂性为O(NLOG2 N)
我从互联网上找到了一个例子,我相信每个人都更容易理解,哈哈哈
关键是对双指针解决方案方法的理解程度。您需要在J指针中找到比I指针较小的元素并替换
实际上,合并使用递归想法。长度为n的整个阵列被认为是长度为1的多个阵列。顺序组,然后返回到两个或两个,重复此步骤,直到所有元素形成一个长度n的数组。
一般步骤如下:
特定的操作不断切割阵列,类似于一半切,不断切割中间元素,因此每个阵列都分为两个,最终变成n阵列,n in in in in in in in in n in lengond.links.links。
合并排序是一种稳定的排序方法。它的平均时间复杂性为o(n^2)。在排序过程中,仅需要n个元素的辅助空间,因此空间复杂性为o(nlogn)
一般步骤如下:
如果与序列相对应的一个二维组是一个完整的二进制数,则完整二进制树中所有非末端节点的值不小于(或小于)。因此,完整二进制树的根节点注定是序列中的最大元素或最小元素,并且桩中的任何子树也堆积了。作为最大的元素,它称为大桩。
首先要排序的一组元素首先根据堆的定义将其排放为序列,即建立初始堆以输出桩顶的最大元素(对于大根桩),然后是剩余的元素可以调整为新堆。获取次要元素,因此重复,直到将整个元素排名为有序排序
在编写代码之前,您需要了解这些基本知识
堆排序是一种不稳定的排序方法。它的平均时间复杂度为O(NLOG2 N)。在排序过程中,仅需要一个元素辅助空间,因此空间复杂性为O(1)
我也在这里被盗。我觉得我可能不明白,让读者看图片!
原始:https://juejin.cn/post/709602964802637287