![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法基础
精蹦学学学学
永远保持学者的心态
展开
-
排序算法:2-路插入排序
2-路插入排序算法是一种变体的插入排序算法,通常用于对数组进行排序。该算法使用两个有序子序列,一个递增有序子序列和一个递减有序子序列,来加快排序过程。同一元素可能会分别被插入到递增子序列和递减子序列中,而该元素在递增子序列和递减子序列内的相对位置取决于其在原始数组中的位置,因此该算法是稳定的。数据量较小、数据已近部分有序的排序场景。原创 2023-05-06 00:59:43 · 850 阅读 · 0 评论 -
排序算法:折半插入排序
3.对于第i个元素,先在有序序列中使用折半查找法找到插入位置j,然后将序列中第j个及之后的元素顺序向右移动一个位置,最后将第i个元素插入到位置j。折半插入排序适用于数据量较小、整体有序或者局部有序等情况,对于大规模无序的数据排序,效率不高,而且还需要额外的空间来存储数组。折半插入排序是一种稳定的排序算法,因为在查找插入位置时使用的是二分查找,不会打乱相同元素的相对顺序。4.重复步骤3,直到所有元素都插入到有序序列中。2.依次将后面的元素插入到有序序列中。1.将第一个元素看作有序序列。原创 2023-05-03 15:42:24 · 968 阅读 · 0 评论 -
排序算法:直接插入排序
首先将待排序序列的第一个元素看作有序序列,将其余的元素看作无序序列,从无序序列中逐个选择元素,插入到有序序列中的合适位置,直到插入所有的元素为止。插入元素时,要进行比较和移动操作,如果当前待插入位置的元素比要插入的元素大,需要将已排序序列中的元素向后移腾出位置,最后将待插入元素插入到正确的位置。的合适位置,最终形成一个完整的有序序列。将一个待排序的序列看作有序和无序两个子序列,将无序子序列中的元素一个一个插入到有序子序列。直接插入排序是一种稳定的排序算法,因为在排序过程中,相同元素的相对顺序不会改变。原创 2023-05-03 11:05:02 · 604 阅读 · 0 评论 -
排序算法:冒泡排序
1. 外层循环决定排序轮数,从第一个元素到倒数第二个元素,逐个比较相邻的元素。原理:核心思想:就是不断往后比较两个相邻的元素,如果顺序不是自己想要的就交换。冒泡排序是一种稳定的算法,遇到相邻的元素的值相同,并不会交换位置。3. 每一轮结束后,都会将最大的元素移动到末尾,缩小比较范围。2. 内层循环逐对比较相邻的元素,如果顺序不正确就交换它们。4. 一直执行上述步骤,直到没有任何元素需要排序。代码优化,插旗和哨兵思想,双向进行。数据量小且近乎有序,数据重复性较高。原创 2023-05-02 22:42:14 · 118 阅读 · 0 评论 -
排序算法:选择排序
假设有n个数据,第一次从待排序的元素中选出最小/大的一个元素,放在所有元素的第一个位置/起始位置;接着,在剩下未排序的元素中选出最小/大元素,继续放在未排序元素的前面,知道未排序的元素个数剩余0个。如在2,3(1),5,4,3(2)中排序后可能出现:2,3(2),3(1),4,5。稳定性:在待排序的元素中若出现了相同的元素,那么稳定性就会被破坏。使用场景:排序简单的数据结构或者相同元素顺序无关的场合。时间复杂度:O(n^2);原创 2023-05-02 11:18:40 · 636 阅读 · 0 评论