随笔分类 -  排序算法

摘要:算法介绍 顾名思义,快速排序(Quick Sort)是实践中的一种快速的排序算法,由C. A. R. Hoare在1960年提出... 阅读全文
posted @ 2021-05-29 17:22 Acx7 阅读(345) 评论(0) 推荐(0) 编辑
摘要:算法介绍 归并排序(Merge Sort)是利用分治的思想实现的一种稳定的排序方法,该算法采用经典的分治(divide-and-... 阅读全文
posted @ 2021-05-22 18:57 Acx7 阅读(227) 评论(0) 推荐(0) 编辑
摘要:算法介绍 希尔排序(ShellSort)的名字源于它的发明者Donald Shell,是直接插入排序算法的一种更高效的改进版本,... 阅读全文
posted @ 2021-05-22 16:31 Acx7 阅读(123) 评论(0) 推荐(0) 编辑
摘要:介绍: 树形选择排序(Tree Selection Sort),又称锦标赛排序(Tournament Sort),是一种按锦标赛的思想进行选择排序的方法。简单选择排序花费的时间主要在比较上,每次都会进行很多重复的比较,造成浪费时间。锦标赛排序就是通过记录比较结果,减少比较次数,从而降低时间复杂度。 阅读全文
posted @ 2021-05-11 23:31 Acx7 阅读(1758) 评论(0) 推荐(0) 编辑
摘要:算法介绍: 2-路插入排序是在折半插入排序的基础上改进的,插入排序的时间主要花在比较和移动这两种操作上。2-路插入排序可以减少排序过程中移动记录的次数,但为此需要借助n个记录的辅助空间。 算法描述: 利用一个与排序序列一样大小的数组作为辅助空间,设置first和final指针标记辅助数组开始位置和最 阅读全文
posted @ 2021-04-22 23:09 Acx7 阅读(631) 评论(0) 推荐(1) 编辑
摘要:算法描述: 直接插入排序在有序序列中查找时采用顺序查找,既然是有序序列,自然可以想到采用二分查找减少查找次数。时间复杂度还是 O(N^2),因为不管是采用二分查找还是顺序查找,算法大部分时间都花在元素的移动上,二分查找只能减少比较次数,在查找位置上节约时间。 性能分析: 时间复杂度:O(N^2) 空 阅读全文
posted @ 2021-04-22 21:00 Acx7 阅读(124) 评论(0) 推荐(1) 编辑
摘要:介绍: 顾名思义,堆排序就是利用堆(Heap)这种数据结构进行排序,在堆排序算法中,我们使用的是最大堆(大根堆),堆排序是一种选择排序。 算法描述: 第一步:利用build_max_heap函数将输入数据构建大根堆。 第二步:因为大根堆中的最大元素总是在根节点,通过把它与堆的最后一个元素交换,就可以 阅读全文
posted @ 2021-04-18 13:20 Acx7 阅读(200) 评论(0) 推荐(1) 编辑
摘要:介绍: 冒泡排序是一种最基础的交换排序(两两比较待排序的关键字,交换不满足次序要求的那对数,直到整个表都满足次序要求为止),工作方式如同碳酸饮料中的二氧化碳气泡最终会上浮到顶端一样,故名"冒泡排序"。 算法描述: 一次比较相邻的数据,将小数据放在前(假设非递减排列),大数据放在后。即第一趟比较第n个 阅读全文
posted @ 2021-04-04 19:12 Acx7 阅读(211) 评论(0) 推荐(1) 编辑
摘要:介绍: 直接插人排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。如图2-1所示,拿在左手上的牌总是排序好的,原来这些牌是桌子上牌堆中顶部 阅读全文
posted @ 2021-04-04 12:34 Acx7 阅读(124) 评论(0) 推荐(1) 编辑
摘要:介绍: 简单选择排序的工作方式突出"选择"二字,每次从待排序数据中选择符合条件的元素放在已排序元素末尾。对于少量元素的排序,简单选择排序是一个有效的算法。 算法描述: 第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放 阅读全文
posted @ 2021-04-03 20:15 Acx7 阅读(567) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示