旋转数组的查找问题。从头开始扫一遍,O(N)的复杂度,一般也能过,甚至先排序以下,再二分都能过。不过这道题的目的当然不在于此。
想一下旋转之后对我们的查找产生了什么影响。如果没旋转过,我们直接比较target与A[middle]的大小,然后总能非常确定的丢掉源数组的一半,即把搜索空间减半,但是旋转之后,只根据A[middle]是确定不了下一轮的走向的,因为即使A[middle]比target大,...
分类:
其他好文 时间:
2014-05-12 15:25:32
阅读次数:
231
迭代法(Iteration)也称“辗转法”,是一种不断用变量的旧值递推出新值的解决问题的方法。...
分类:
其他好文 时间:
2014-05-12 14:56:47
阅读次数:
297
接着上一篇,同样是旋转数组中查找问题。如果这个数组有重复元素怎么办呢?会有什么影响?
我举一个极端的例子,假设数组中的元素是这样的,1,1,2,1,1,1,1,我们要在这个数组中查找2,一开始的A[middle]=1,发现比target小,那我们就看看A[0]和A[N],发现都跟A[middle]相等,那么这个2到底在哪一半中?只有上帝知道,如果他老人家真的存在的话。这种时候我们怎么办呢?没有其...
分类:
其他好文 时间:
2014-05-12 14:45:35
阅读次数:
278
这是python吧的一个帖子(http://tieba.baidu.com/p/3030737423),具体的就是,导入txt文档,然后就会生成像一个gif的界面,文字不断的更换,用这种方法看文档,如图:
代码:
# -*- coding: utf-8 -*
#-------------------------------------
import pygame
from pygame...
分类:
编程语言 时间:
2014-05-12 14:44:34
阅读次数:
492
1、list.append(obj) 向列表中添加一个对象obj
list = ['apple', 'pear', 'orange']
>>> list.append('apple')
>>> list
['apple', 'pear', 'orange', 'apple']
2、list.count(obj) 返回一个...
分类:
编程语言 时间:
2014-05-12 14:17:41
阅读次数:
418
首先,你要对快速排序的思想有一定的了解,先看快速排序的代码。...
分类:
编程语言 时间:
2014-05-11 14:06:30
阅读次数:
338
贪婪法(Greedy)又叫登山法,它的根本思想是逐步到达山顶,即逐步获得最优解,是解决最优化问题时的一种简单但适用范围有限的策略。“贪婪”可以理解为以逐步的局部最优,达到最终的全局最优。...
分类:
其他好文 时间:
2014-05-11 06:34:39
阅读次数:
1444
八数码0.0,我又来水博客了。
IDA*算法,A*为曼哈顿距离,判重用康拓展开。
#include
#include
#include
#include
#include
using namespace std;
int a[4][4];
int dx[]={0,0,-1,1};
int dy[]={-1,1,0,0};
char s[]="123804765";
int end[4]...
分类:
其他好文 时间:
2014-05-11 06:20:57
阅读次数:
334
// 创建一个block // 1.返回值 //
2.使用‘^’标记一个Block,并写出Block变量 // 3.确定Block参数列表,参数名可以省略 // 4.‘^’ // 5.参数列表 //
6.主题部分,‘{};’ // 7.在‘{}...
分类:
其他好文 时间:
2014-05-11 00:45:33
阅读次数:
232
快速排序是基于分治思想的一种排序算法,就像该方法的名字一样,速度比较快,所以叫做快速排序;它的平均时间复杂度为O(N*logN),最坏时间复杂度为O(n2),由于快速排序在序列元素数量多的时候速度比较快,所以很多语言内置的排序方法也是用快速排序实现的。快速排序也有很多优化的版本,比如在排序时基数的选...
分类:
其他好文 时间:
2014-05-10 23:46:39
阅读次数:
553