![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础算法
Cute欧阳
聪明比努力重要。
展开
-
归并算法
在算法导论中,归并算法划归到分治策略中讲述。基本思想就是将大的问题分成小的问题,然后分而治之。实现该算法,既可以采用递归函数;也可以由底向上,通过修改跨度来实现归并。下面就分别贴出这两种算法的简单实现。由于并没有对算法进行大规模的数据测试,所以错误之处望大家斧正。 不管是递归还是直接归并,均需用到下述函数:函数的作用是将p到q位置以及q+1到r位置已经排好序的子数组合并为一个整体数组。 v原创 2015-05-20 23:41:33 · 541 阅读 · 0 评论 -
二分查找代码分析以及应用
首先说明一点,某些代码在边界条件存在细微差别,至于原理很多时候需要查找原始文献。我只是总结区别,比较记忆,原理在学会使用以后慢慢品味理解。或许某时刻就会茅塞顿开。 二分查找的最简单代码: 输入:A[start,start+1,......,end-1,end] 输出:和val相等的元素的下标;假如不存在则输出-1; 循环不变式:貌似是A[start]=val。 int BIN_FIND_原创 2015-05-22 14:47:58 · 505 阅读 · 0 评论 -
算法导论--最大子数组问题
暴力解决: int find_max_substr(const vector& vi,int& left, int& right) { int i = 0; for(auto it : vi) { vv[i][i] = it; ++i; } for(int length = 1;length原创 2015-06-30 17:14:15 · 532 阅读 · 0 评论 -
Expression Add Operators
Expression Add Operators原创 2016-11-30 21:08:13 · 341 阅读 · 0 评论 -
Divide Two Integers
从乘法、除法的定义可知最直观的思路就是循序减法,但是超时;因此,可以利用位运算,来代替乘法;class Solution { public: int divide(int dividend, int divisor) { // 此处强制装换(long long)必不可少,因为默认情况下,数字按照整型处理,因此-2147483648,若不加强制转化为long long处理的话,此处仍然原创 2016-12-01 00:42:12 · 412 阅读 · 0 评论