随笔分类 - 排序算法
摘要:算法思想 计数排序适用于n个待排序元素都是在0到k区间内的整数,算法步骤如下: 统计待排序数组在区间点的重复次数 例如:有待排序数组A{2,5,3,0,2,3,0,3},可以看出待排序数组中的元素都位于区间[0,5]内,现在使用辅助数 组C[6],来统计数组A在这个区间每个点的重复次数: 首先先将辅
阅读全文
摘要:算法思想 归并排序使用了分治的套路,先将待排序元素划分为个数均等的两部分,然后在对已经划分的两个部分在进行均等 划分,如此递归的划分下去,直到区间无法在划分时停止,然后合并这些子区间即可;合并时每次从两个子区间内选 出最大(降序排序)或者最小(升序排序)的元素放入辅助空间内,直到某个子区间为空,然后
阅读全文
摘要:算法思想 大根堆 堆其实是一种近似完全二叉树的数据结构,当树中所有的父节点的值都大于它的子节点的值时,这样的二叉树又 被称为大根堆; 堆的存储方法 堆(二叉树)既可以使用数组表示,也可以使用链式节点表示,但是堆排序适用于对数组进行排序,无法对无序的 链式二叉树进行排序; 数组表示二叉树时数组中元素的
阅读全文
摘要:算法思想 取待排序元素的区间端点作为作为界值,然后通过交换使得待排序元素中所有大于界值的元素位于界值的一侧, 所有小于界值的元素位于界值的另一侧,然后在对界值左右两侧的待排序元素使用同样的方法进行排序,直到下一 次待排序区间只有一个元素时,则表示所有的元素排序完成,可以看出这种排序方式使用了分而治之
阅读全文
摘要:算法思想 希尔排序算法思想 使用一个增量序列{t1,t2,t3,......tn},其中tn>....>t2>t1=1,其实这个增量序列也可以理解为 间距序列; 设有数组A[k],下标从0开始: 当增量为tn时,从数组首元素A[0]开始,此时距离首元素间隔为tn的元素是A[tn],下一个距离元素A[
阅读全文
摘要:算法思想 从左到右依次比较,找出全部无序最小的元素与数组中的第一个元素进行交换;然后从第数组中第二个元素 开始比较,找出剩余无序元素中最小的的元素,然后将其与数组中的第二个元素进行交换,按照这种方式操作 下去直到数组有序 例:升序排序8,1,6,3,2,4 代码实现 bool SelectionSo
阅读全文
摘要:算法思路 升序排列: 从左到右(或右到左)比较相邻的元素,如果当前元素比下一个元素大(或者小),就交换他们两个。 对下一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,本轮排序完成后得到无序部分中的最大元 素,此时这个最大元素和之前的已经排序的部分,组成新的有序部分 针对所有的无序元素重复以上
阅读全文
摘要:算法思想 将数据分为两部分:有序表,无序表;开始时有序表为空,无序表中全部是待排序数据,依次从无序表中取出待 排序元素插入到有序表中的合适位置,使有序表中的元素保持有序,直到无序表为空,表示排序完成。 例如:对数组使用插入排序 红色部分表示无序表,绿色部分表示有序表,直线箭头表示挪动元素以留出空间,
阅读全文

浙公网安备 33010602011771号