常用的排序算法总结,一文看懂8大排序算法

今天跟大家谈谈一文看懂8大排序算法,和常用的排序算法总结对应的一些知识点,希望对大家有所帮助。


概念


空间复杂度,是否需要申请空间支持


简单来说,时间复杂度就是循环次数。


可靠性,排序完成后,待排序队列中相同元素的顺序不会改变。


排序方式


插入方式无需申请辅助空间。你需要将想要排序的元素拉出来,依次与有序列表中的元素进行比较,然后找到合适的位置插入它们。有序列表的元素。


11直接插入排序


111FirstSort将目标序列的第一个元素视为已排序序列,将倒数第二个元素视为未排序序列。


112从头到尾扫描未对齐的序列,并将每个扫描到的元素插入到对齐序列中的适当位置。


12希尔排序利用将要排序的项分成多块的分而治之的思想来优化直接插入排序。排序结果不稳定,因为相同的元素可能分布在不同的子序中。


121选择增量序列t1,t2,tk。其中tigt;tj,tk=1;


122根据增量序列k的个数对序列进行k次排序。


123在每个排序步骤中,将待排序的列按照其增量ti分成若干个长度为m的子序列,并对每个子表进行直接插入排序。仅当增量参数为1时,整个序列才被处理为表格,并且表格的长度变为整个序列的长度。


2如何选择


21直接选择排序的可靠排序需要对遍历策略做出重大决策。要从小到大排序,必须从右向左遍历要排序的元素。同样,从大到小排序,需要从左到左遍历要排序的元素,如果相等,则获取最后一个元素。


211首先找到未排序序列中的最小元素并将其存储在已排序序列的开头。


212然后继续在剩余的未排序元素中找到最小的元素,并将其放在已排序序列的末尾。


213重复步骤2,直到所有元素都对齐。


22堆排序分为大顶堆和小顶堆。


大顶堆每个节点的值都大于或等于其左右子节点的值。


小顶堆每个节点的值小于或等于其左右子节点的值。


221将排序后的序列组织成一个大顶堆。根据大顶堆的性质,当前堆的根节点是序列中最大的元素。


222交换堆的顶部和最后一个元素,然后将剩余节点重新组织成一个大的顶级堆。


223从大顶臀的第一个配置开始,重复步骤2,依此类推。每次构建时,都可以获得序列的最大值,然后将其放在大顶堆的末尾。最后得到比对后的序列。


3兑换方式


31冒泡排序


311比较相邻元素。如果第一个比第二个大,则交换两者。


312对每对相邻元素执行相同的操作,从第一对开始,到最后一对结束。一旦完成这一步,最终的元素将是最大的数字。


313对除最后一个元素之外的所有元素重复上述步骤。


314每次对越来越少的元素重复上述步骤,直到没有更多的数字对可供比较。


32快速排序


快速排序使用分治策略将序列分为两个子序列。


第321章从名为“datum”的序列中选择一个元素。


322重新排序数组,使所有小于默认值的元素都放置在默认值之前,所有大于默认值的元素都放置在默认值之后。此分区结束后,碱基位于序列的中间。这称为分区操作。


323对小于参考值的元素子数组和大于参考值的元素子数组进行递归排序。


4合并方法


41归并排序是一种基于归并操作的有效排序算法。该算法是分而治之法的一个非常常见的应用。


第411章应用间距,使大小为两个对齐序列的总和。该空间用于存储合并序列。


412设置两个指针。初始位置是两个比对序列的起始位置。


413比较两个指针指向的元素,选择一个相对较小的元素,将其放入合并空间,然后将指针移动到下一个位置。


414重复步骤3,直到特定指针到达序列末尾。


415其他序列中的所有剩余元素都直接复制到合并序列的末尾。


5基数法基数排序是一种非比较整数排序算法,其原理是根据位数将整数切割成不同的数字,然后对每个数字进行单独比较。基数排序不仅限于整数,因为整数还可以表示特定格式的字符串和浮点数。


51桶排序


算法思想将数组划分为有限数量的桶。每个桶都单独排序。桶排序是鸽笼排序的归纳结果。当要排序的数组中的值均匀分布时,桶排序使用线性时间。然而,桶排序不是比较排序,不受Onlogn下界的影响。简单来说,就是将数据分组到桶中,然后对每个桶中的数据进行排序。


例如,您想要对大小在[11000]范围内的n个整数A[1n]进行排序。


首先,桶的大小可以设置在10的范围内。具体来说,集合B[1]存储[110]中的整数,集合B[2]存储[1020]中的整数,集合B[i]存储[i-110,i10]中的整数,存储i=1,2,100。总共有100个桶。


然后从头到尾扫描A[1n],并将每个A[i]放入其对应的桶B[j]中。然后我们对这100个桶中每个桶中的数字进行排序。为此,您可以使用冒泡排序、选择排序或快速排序。一般来说,任何排序方法都可以。


最后,将每个桶中的数字按从小到大的顺序输出,这样我们就得到了一个所有数字按顺序列出的序列。假设我们有n个数字和m个桶。如果数字均匀分布,则每个桶平均有n/m个数字。如果我们对每个桶中的数字进行快速排序,则整个算法的复杂度为On+mn/mlogn/m=On+nlognnlogm。看上面的公式可以看出,m越接近n,桶排序复杂度就越接近On。当然,上述复杂度计算是基于n个输入数均匀分布的假设。虽然这个假设很强,但在实际应用中结果并不是很好。如果所有数字都落入同一个桶中,则它会退化为常规排序。前面提到的大多数排序算法的时间复杂度都是O,有些排序算法的时间复杂度是Onlogn。然而桶排序可以达到O的时间复杂度。但桶排序的缺点是


首先,空间复杂度较高,需要大量额外开销。排序具有两个数组的空间开销。一个将存储要排序的数组,另一个将是所谓的桶。例如,如果要排序的值是从0到m-1,则m个桶将为这个桶数组至少需要m个空间。


其次,要排序的元素必须在一定范围内。


总结


关于时间复杂度


平方顺序On2Sort:直接插入、直接选择和冒泡排序。


线性对数顺序Onlog2n排序快速排序、堆排序和合并排序。


线性顺序排序时桶排序、盒排序等。


关于稳定性稳定排序算法包括冒泡排序、插入排序、归并排序、桶排序等,非稳定排序算法包括选择排序、快速排序、希尔排序、堆排序等。


一、1,2,3,4四个数字有多少种排列组合,是怎样的?

共有24种。A=4-3-2=24为


1234、1243、1324、1342、1423、1432、2134、2143、2314、2341、2413、2431、3124、3142、3214、3241、3412、3421、4123、4132、4231、4312、4321。


数组的定义任意m-mn,n个不同元素中的m和n都是自然数,一列中相同元素按一定顺序的排列称为从n个不同元素中取出的m个元素之一。从n个不同元素中取出m-mn个元素的所有排列数称为从n个不同元素中取出m个元素的排列数,用符号A-n,m-表示。


二、用三角形,正方形,五角星,圆形这四个图形排成一排,有多少种不同的排列方法?

O囗,根据这个规则,第48个数是多少?


有四种O1、囗2、3、4。热量计算


48=4=12,你可以一直排下去。48号是


三、123有几种排列方法?

排列是指将有限集合的子集按照特定条件排列成列或圆,不允许重复或重复。


排序包括选择性排序和全局排序。如果两个数组的元素完全相同且元素排列顺序相同,则两个数组相等。


秩序是指符合事实自然规律的秩序,也指符合法律和传统、有利于社会和谐的秩序。


123有六种配置123、132、213、231、312和321。除0之外的3个不同数字有6种不同的排列方式。对于两个相同的数字和一个不同的数字(不包括-0),可以进行三种排列。除了-0之外,只有一组由三个相同的数字组成的数组。


除非特别注明,本站所有文字均为原创文章,作者:admin

No Comment

留言

电子邮件地址不会被公开。 必填项已用*标注

感谢你的留言。。。