摘要: 【基本思想】 计数排序类似与桶排序,也是用空间换取了时间,计数排序要求数组必须在一个确定的区间内。 过程:1. 首先找出数组的最大值和最小值;2. 遍历数组,以数字作为键,该数字出现的次数作为值插入哈希表中;3. 在最小值到最大值这个区间内遍历哈希表,将数字反向插入数组中。 【算法复杂度】 计数排序 阅读全文
posted @ 2019-05-03 16:24 梦醒时夜续 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 【基本思想】 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列。 【算法复杂度】 时间复杂度(平均)时间复杂度 (最坏)时间复杂度(最好)空间复杂度稳定性 O(n^2) O(n^2) O(n) O(1) 稳定 时间复杂度>>> 如果 阅读全文
posted @ 2019-03-31 22:59 梦醒时夜续 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 等差素数列 类似:7,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列,上边的数列公差为30,长度为6。 2004年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。这是数论领域一项惊人的成果! 有这一理论为基础,请你借助手中的计算机,满怀信心地搜索:长度为10 阅读全文
posted @ 2019-03-20 17:32 梦醒时夜续 阅读(642) 评论(0) 推荐(0) 编辑
摘要: 【概念】 Dijkstra算法是求解从一个顶点到其余各顶点的最短路径的算法,解决的是有向无环图中最短路径问题。 【原理】 1.首先,引入一个辅助向量D,它的每个分量 D 表示当前所找到的从起始点 (即源点 )到其它每个顶点的长度。例如,D[3] = 2表示从起始点到顶点3的路径相对最小长度为2。这里 阅读全文
posted @ 2018-10-17 18:04 梦醒时夜续 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 【基本思想】 将待排序序列构造成一个大根堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值,然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值,如此反复执行,便能得到一个有序序列了。 堆:具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子 阅读全文
posted @ 2018-10-12 09:10 梦醒时夜续 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 【基本思想】 将所有待排序的数统一为相同的数位长度,数位较短的数前面补零,然后从低位到高位按位比较,位数字小的排在前面,大的排在后面,这样当比较第N位时前N-1位都是有序的,如此循环的比较,直到最高位比较完成,整个序列就是有序的了。 基数排序图文说明 通过基数排序对数组{53, 3, 542, 74 阅读全文
posted @ 2018-10-12 08:33 梦醒时夜续 阅读(918) 评论(0) 推荐(0) 编辑
摘要: 【基本思想】 首先选取一个初始值(一般选取待排序序列的第一个值),通过一趟排序将待排序序列分成两个子序列,使左子序列的所有数据都小于这个初始值,右子序列的所有数据都大于这个初始值,然后再按此方法分别对这两个子序列进行排序,递归的进行上面的步骤,直至每一个数据项都有如下性质:该数据项左边的数据都小于它 阅读全文
posted @ 2018-10-12 08:19 梦醒时夜续 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 【基本思想】 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用,将已有序的子序列合并,得到完全有序的序列,即先使每个子序列有序,再使子序列段间有序。 归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[i]复制到r[k]中 阅读全文
posted @ 2018-10-10 21:42 梦醒时夜续 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 【基本思想】 先取一个小于n的整数d1作为第一个增量,把数组元素分组,所有距离为d1的倍数的记录放在同一个组中,先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量 =1( < …<d2<d1),即所有记录放在同一组中进行直接插入排序为止。 【算法复杂度】 时 阅读全文
posted @ 2018-10-10 20:10 梦醒时夜续 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 【基本思想】 假设输入数据服从均匀分布,将数据分到有限数量的桶里,每个桶再分别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排)。 【算法复杂度】 桶排序最好情况下使用线性时间O(n),桶排序的时间复杂度,取决与对各个桶之间数据进行排序的时间复杂度,因为其它部分的时间复杂度都为O(n 阅读全文
posted @ 2018-10-10 19:36 梦醒时夜续 阅读(166) 评论(0) 推荐(0) 编辑