上一页 1 ··· 4 5 6 7 8 9 下一页

快速排序算法(三种分区方法要熟练!)

摘要: 快排确实厉害!!! 总的思想是分治递归,取定一个值作为标签,比该值小的去左边,比该值大的去右边。 单向扫描分区法: 去左边的操作:只将sp++即可。 去右边的操作:具体是将sp指向的值与bigger指向的值交换。 考虑边界:当扫描指针sp与bigger相等时,再执行一次循环后,sp刚好在bigger 阅读全文
posted @ 2020-04-17 21:30 Black_x 阅读(1533) 评论(0) 推荐(0) 编辑

正整数指数的快速幂

摘要: 用递归,每次幂次升半。 1 typedef long long ll; 2 ll quick_pow(ll a, int n) 3 { 4 // 出口设置 5 if (n == 0) return 1; 6 ll ans = a; 7 int ex = 1; // 幂次 8 while ((ex < 阅读全文
posted @ 2020-04-16 22:12 Black_x 阅读(150) 评论(0) 推荐(0) 编辑

旋转数组的最小数字(二分)

摘要: 题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组 {3,4,5,1,2} 为 {1,2,3,4,5} 的一个旋转,该数组的最小值为1。 分析: 1, 2, 3, 4, 5 的一个旋转是 3, 4, 5, 1 阅读全文
posted @ 2020-04-16 21:32 Black_x 阅读(154) 评论(0) 推荐(0) 编辑

小白上楼梯(递归设计)

摘要: 题目:小白正在上楼梯,楼梯有n阶,小白一次可以上1阶、2阶或者三阶,实现一个方法,计算小白有多少种走完楼梯的方式。 递归式:f(n) = f(n - 1) + f(n - 2) + f(n - 3) 注意出口:n = 1、n = 2和n = 3时设置出口。 1 /* 2 *小白上楼梯 3 */ 4 阅读全文
posted @ 2020-04-16 20:03 Black_x 阅读(353) 评论(0) 推荐(0) 编辑

排序算法性能

摘要: 稳定:如果 a 原本在 b 前面,而 a = b,排序之后 a 仍然在 b 前面。 不稳定:如果 a 原本在 b 前面,而 a = b,排序之后 a 可能会出现在 b 后面。 各种算法的性能比较: 阅读全文
posted @ 2020-04-16 19:43 Black_x 阅读(118) 评论(0) 推荐(0) 编辑

算法导论 - 分治策略 - 常见递归式复杂度

摘要: 随时更新补充常见分治算法的时间复杂度: 阅读全文
posted @ 2020-04-16 11:20 Black_x 阅读(133) 评论(0) 推荐(0) 编辑

程序时间记录

摘要: 用clock函数,库<ctime>。 记录时间的数据类型为clock_t。 1 int main() 2 { 3 clock_t start, end; 4 start = clock(); // 计时开始 5 6 vector<int> ar; 7 for (int i = 30; i >= 0; 阅读全文
posted @ 2020-04-15 16:27 Black_x 阅读(157) 评论(0) 推荐(0) 编辑

希尔排序

摘要: 插入排序的小优化,算法性能不稳定,其时间复杂度Ω(nlgn) - O(n^2)。 但这原理咋就折磨难理解内。 希尔排序采用“分组”的思想,按照区间的步长将数组分为不同的组。举个例子,按步长3将区间分组,其序号分别为3n,3n+1,3n+2。(n从0开始)然后在每一个组里都使用插入排序,称其为一趟操作 阅读全文
posted @ 2020-04-15 15:31 Black_x 阅读(179) 评论(0) 推荐(0) 编辑

经典分治 - 汉诺塔游戏

摘要: 分治策略: 将父问题划分为多个子问题(注:子问题与父问题一定要具有自相似性),然后找递归出口。 1.子问题规模变小。2.子问题与父问题本质等价。 汉诺塔游戏简述:三个柱A、B、C,将从大到小的盘按规则从A柱移到B柱。 具体的分治算法实现: 1 - N从A移动到B,C为辅助。 等价于: 1、1 - ( 阅读全文
posted @ 2020-04-12 15:36 Black_x 阅读(181) 评论(0) 推荐(0) 编辑

数据离散化

摘要: 数据得离散化是重要的算法思想。(如果每个数据元素的具体值并不重要,重要的是他们之间的大小关系的话,我们可以先对这些数据进行离散化,使数据中的最大值尽可能小且保证所有数据都是正数) 当以权值为下标的时候,有时候值太大,存不下。 所以把要离散化的每一个数组里面的数映射到另一个值小一点的数组里面去。 打个 阅读全文
posted @ 2020-04-11 23:48 Black_x 阅读(762) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 下一页