算法
文章平均质量分 62
Pro-Luo
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
微软等面试100题筛选答案-5-求K小
较为详细的分析http://blog.youkuaiyun.com/v_JULY_v/article/details/6370650//题目:输入n个整数,输出其中最小的k个。//例如输入1,2,3,4,5,6,7和8这8个数字,//则最小的4个数字为1,2,3和4。//选择K小/K大//解法,建立K大小的已经排序的数组/堆/二叉树,跟着维持这个解空间的大小,插入n个数#include "std原创 2013-11-18 10:13:55 · 840 阅读 · 0 评论 -
死循环的另外一种写法
class aa{ bb b;// = new bb(); public bb getB() { return new bb(); } public void setB(bb b) { this.b = b; }}class bb{ aa a;// = new aa(); public aa getA() { return new aa(); } public v原创 2014-04-08 21:03:05 · 756 阅读 · 0 评论 -
二叉查找数C++ 数组模拟二叉树及面向对象实现
数组实现#include "stdafx.h"#include using namespace std;#define iArrSize sizeof(iArr)/sizeof(iArr[0])void inertValue(int *iBinTree, int iNode, int iValue){ if (iBinTree[iNode] == 0){//默认设定不对0插入原创 2013-11-14 11:43:46 · 850 阅读 · 0 评论 -
几种常用排序算法的比较
在计算机科学所使用的排序算法通常被分类为:1-计算的复杂度(最差、平均、和最好性能),依据列表(list)的大小(n)。一般而言,好的性能是O(n log n),且坏的性能是O(n2)。对于一个排序理想的性能是O(n)。仅使用一个抽象关键比较运算的排序算法总平均上总是至少需要O(n log n)。2-存储器使用量(以及其他电脑资源的使用)3-稳定度:稳定排序算法会依照相等的关键(换言之原创 2013-11-11 22:21:44 · 984 阅读 · 0 评论 -
动态规划、贪心、dynamic programming(DP)
动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,利用各阶原创 2013-11-12 10:44:10 · 1387 阅读 · 0 评论 -
动态规划问题-DP 最大子段和O(n)解决方法
//已知 有9,-8,1,-10,88,4,-5,7,9,-100,求最大子段和#include "stdafx.h"#includeusing namespace std;#define iMAXSIZE (sizeof(iSrcArr)/sizeof(iSrcArr[0]))+100//最大子段和//void getBiggestSum(int iSrcArr[],原创 2013-11-12 10:38:08 · 1208 阅读 · 0 评论 -
简易递归快排 QuicklySort C++
快排和归并的递归是相类似的,主要是都用到了分而治之的方法,快排需要选取中间点O(nlog n) 期望时间,O(n^2) 最坏情况; 对于大的、乱数列表一般相信是最快的已知排序//我一直认为最坏情况是O(nlogn)#include "stdafx.h"#include using namespace std;#define i_max_size sizeof(i_src)/s原创 2013-11-10 11:34:24 · 1039 阅读 · 0 评论 -
归并排序 C++/Java 递归实现代码 -犯了菜鸟老毛病
建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。原创 2013-11-10 10:08:33 · 1066 阅读 · 0 评论 -
插入排序 Java/C++
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元原创 2013-11-09 23:04:01 · 835 阅读 · 0 评论 -
算法思路重新实现-堆排序 中的 C++ & Java
堆排序-树形选择排序的改进,使用的辅助空间较少(1个元素用于空间交换)分大堆和小堆,每个节点的值都大于(小于)左右子树,即为最大(小)堆。即保证堆顶是最大(小)值,Java Code loading in some day原创 2013-11-05 01:29:16 · 594 阅读 · 0 评论 -
微软等面试100题筛选答案-25-求最长连续数字子串
//写一个函数,它的原形是int continumax(char *outputstr,char *intputstr)//功能://在字符串中找出连续最长的数字串,并把这个串的长度返回,//并把这个最长数字串付给其中一个函数参数outputstr所指内存。//例如:"abcd12345ed125ss123456789"的首地址传给intputstr后,函数将返回9,//outputst原创 2013-11-19 10:27:56 · 1053 阅读 · 0 评论 -
微软等面试100题筛选答案-3-求子数组最大和
http://blog.youkuaiyun.com/byluo/article/details/15498813//输入一个整形数组,数组里有正数也有负数。//数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。//求所有子数组的和的最大值。要求时间复杂度为O(n)。//最大子段和#include "stdafx.h"#includeusing namespace std;原创 2013-11-18 09:37:30 · 998 阅读 · 0 评论 -
微软等面试100题筛选答案-2-设计包含min函数的栈
//定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。//要求函数min、push以及pop的时间复杂度都是O(1)。#include "stdafx.h"#include using namespace std;templateclass StackSuppliedMin{public: vector datas; vector minStack; void原创 2013-11-18 09:29:24 · 949 阅读 · 0 评论 -
微软等面试100题筛选答案-1-二元查找树转换成一个排序的双向链表
//输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。//要求不能创建任何新的结点,只调整指针的指向。#include #include "stdafx.h"#include using namespace std;struct BSTreeNode{ int m_nValue; // value of node BSTreeNode *m_pLeft; /原创 2013-11-18 09:09:06 · 890 阅读 · 0 评论 -
堆排序-c++实现,节点变动则递归子树调整状态
伪代码在算法导论,其他不多说原创 2013-11-11 09:56:38 · 983 阅读 · 0 评论
分享