![](https://i-blog.csdnimg.cn/direct/e3e21e0ba7e44d96a95072eb1c082659.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
排序算法专栏
整理和汇总了常见的排序算法以及其排序优化小贴士
sqc157400661
这个作者很懒,什么都没留下…
展开
-
(5) 归并排序
我们先介绍两个有序的数组合并成一个有序数组的操作。先申请一个辅助数组,长度等于两个有序数组长度的和。从两个有序数组的第一位开始,比较两个元素,哪个数组的元素更小,那么该元素添加进辅助数组,然后该数组的元素变更为下一位,继续重复这个操作,直至数组没有元素。返回辅助数组。有序数组A:[3 8 9 11 13]有序数组B:[1 5 8 10 17 19 20 23][] 表示比较的范围。因为 1 < 3,所以 1 加入辅助数组有序数组A:[3 8 9 11 13]原创 2024-09-04 10:03:46 · 148 阅读 · 0 评论 -
(4) 快速排序
【代码】(4) 快速排序。原创 2024-09-01 12:40:31 · 63 阅读 · 0 评论 -
(3) 插入排序
插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中, 从而得到一个新的有序表,该表中的已排序数据数目加1。逆序对:数组 [2,3,8,6,1] 的逆序对为 <2,1> < 3,1> <8,1> <8,6> <6,1>贴士:大多情况下,快排是很快的,但是当数据量较小时,插入排序的性能很可能比快排还要高。插入位置可以利用二分查找法来快速寻找。原创 2024-09-01 12:35:41 · 236 阅读 · 0 评论 -
(2) 选择排序
简单选择排序最大的特点就是交换移动数据次数相当少(冒泡排序每次都会交换,而选择排序是再一轮比较完后再交换), 这样也就节约了相应的时间。无论是最好情况还是最坏情况,选择排序的时间复杂度都是一致的,依然为O(n^2)。虽然时间复杂度与冒泡排序相同,但是选择排序在性能上仍然会略优于冒泡排序。冒泡排序的思想是不断的交换,最终完成排序。选择排序即:选择最大值!其基本思想是每次遍历找到最大的元素,将该最大的元素与末尾元素交换位置,本轮遍历结束后,最后一个元素就是最大元素。原创 2024-09-01 12:34:07 · 226 阅读 · 0 评论 -
(1)冒泡排序和其优化
如果要排序的数据序列已经完全有序了,那么冒泡算法仍然会按照两两比较策略继续走下去,这是不能容忍的,我们可以先记录该数据序列是否有序,只要内层循环没有发生交换,就证明整个数组现在已经有序,无需外层循环再次排序!也就是说鸡尾酒的排序过程像钟摆一样,奇数轮和偶数轮来回排序,第1轮从左往右,第2轮从右往左,第3轮再从左往右,直到有一轮排序时没有发生交换,则退出循环。冒泡排序(Bubble Sort)是一种交换排序,基本思想是:两两比较相邻记录的关键字,如果反序则交换,直到没有反序记录位置。原创 2024-09-01 12:29:46 · 222 阅读 · 0 评论