我做这道题,是先用二分查找找到该数字,而后再遍历其前后相同的数字,统计次数。这种做法的平均时间复杂度为O(logn),最坏情况下为O(n),剑指offer上给的思路是两次用二分查找分别找到该数字第一次和最后一次出现的位置,这样的时间复杂度平均和最坏都是O(logn),稍好些》
下面贴上我按照自己思路写的代码:...
分类:
其他好文 时间:
2014-06-07 01:19:45
阅读次数:
197
冒泡排序法是一种经典的、入门级的排序算法。它重复地遍历整个数组,对数组的元素进行两两比较,如果两数的顺序有误,则将两数字交换。
由于在比较的过程中,最小的数先变换到数列的顶端,其次是第二小的数……直至所有数字完成排序,因而得名冒泡排序。...
分类:
其他好文 时间:
2014-06-05 11:39:09
阅读次数:
194
/*
二叉查找树的链表实现:
以及三种遍历方式,删除节点;
查找节点;
author:天下无双
Date:2014-5-28
Version:3.0
*/
#include
#include
typedef int T;//树内节点的数据类型
using namespace std;
class BiTree
{
private:
struct BiNode{
T data;...
分类:
其他好文 时间:
2014-06-05 09:12:12
阅读次数:
217
TinyXmlParser一切以简单、实用、快速为主。
示例1:Xml字符串解析
比如,我们要解析一段Xml字符串,简单如下即可:
XmlDocument xmlDocument = new XmlStringParser().parse("a");
示例2:输出格式化后的Xml:
XmlFormater formater = new XmlFormater();
System.ou...
分类:
Web程序 时间:
2014-06-05 08:47:39
阅读次数:
328
1.脑图
2.表示方法
按照数据结构概述所说,线性表有两种表示方法分别是顺序表示和链式表示,链表就是链式表示的典型。
我们知道链式表示是分配了n块内存空间,可以认为彼此不连续,所以不能用偏移量去定位每个元素。
下面就先说最简单的单向链表:
如果每个数据元素能有一个指针指向下一个元素的话,那么只需要知道第一个数据元素就能一个一个的遍历整个链表了,这就是单向链表。...
分类:
其他好文 时间:
2014-06-05 06:59:17
阅读次数:
300
议题:快速排序实现之一(单向遍历)分析:算法原理:主要由两部分组成,一部分是递归部分QuickSort,它将调用partition进行划分,并取得划分元素P,然后分别对P之前的部分和P
之后的部分递归调用QuickSort;另一部分是partition,选取划分元素P(随机选取数组中的一个元素,交换...
分类:
其他好文 时间:
2014-06-03 10:00:23
阅读次数:
392
议题:快速排序算法实现之三(三路划分遍历,解决与划分元素相等元素的问题)分析:算法原理:使用三路划分策略对数组进行划分(也就是荷兰国旗问题,dutch
national flag problem)。这个实现是对实现二的改进,它添加处理等于划分元素的值的逻辑,将所有等于划分元素的值集中在一起,并且以后...
分类:
其他好文 时间:
2014-06-03 09:51:51
阅读次数:
386
索引不含查询列可以考虑联合索引如果我们想读取索引列和非索引列的值,但是不想发生索引回表读,怎么办如我们想查询id列和name列的值create index aa
on t(id,name)性能比回表高效但是联合索引的索引列最多不能超过3列,如果索引列太多,那么索引块势必会多,就会遍历更多的所以块
分类:
其他好文 时间:
2014-06-03 09:20:14
阅读次数:
241
function InitTable(tableID, trName) { $(tableID
+ " tr").each(function (index, element) { if (index == 0 || index == $(tableID +
" tr").leng...
分类:
编程语言 时间:
2014-05-31 17:02:47
阅读次数:
251
function ReShowSelected(){$("#Map
area").each(function(){//定义画笔属性var canvers =
document.getElementById("diagonal");var context = canvers.getContext("2...
分类:
Web程序 时间:
2014-05-31 08:07:12
阅读次数:
256