摘要:http://blog.csdn.net/magicharvey/article/details/10282801简单描述二分查找,又名折半查找,是一种在有序序列中查找特定元素的搜索算法。搜素过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜素 过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为 空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。代码实现代码已经在xcode中验证,可以直接使用。//二分查找int BinarySearch(int a[],int length, 阅读全文
选择排序(SelectionSort)
2014-01-03 12:54 by 江湖么名, 241 阅读, 0 推荐, 收藏, 编辑
摘要:http://blog.csdn.net/magicharvey/article/details/10274765算法描述选择排序是一种不稳定排序。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。基本思想每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。实现步骤从序列中找到最小的元素,并与第一个元素交换;从a[2],...a[n]中的元素中找到最小的元素,并与a[2]交换,从而a[1],a[ 阅读全文
插入排序(InsertionSort)
2014-01-03 12:52 by 江湖么名, 223 阅读, 0 推荐, 收藏, 编辑
摘要:算法描述插入排序是在一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序。插入排序是一种稳定的排序。基本思想插入排序是在一个已经有序的小序列的基础上,一次插入一个元素。当然,刚开始这个有序的小序列只有1个元素,就是第一个元素。比较是从有序序列的末尾开始,也就是想要插入的元素和已经有序的最大者开始比起,如果比它大则直接插入在其后面,否则一直往前找直到找到它该插入的位置。如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。实现步骤从第一个元素开始,这个元素可以认为已经被排序;取出下一个元素a[i],按照从后往前的速度开始扫描;如果 阅读全文
堆排序(HeapSort)
2014-01-03 12:51 by 江湖么名, 308 阅读, 0 推荐, 收藏, 编辑
摘要:http://blog.csdn.net/magicharvey/article/details/10207931算法描述堆排序(HeapSort)不是一个稳定的排序。它是使用完全二叉树的数据结构进行排序的算法。基本思想若在输出堆顶得最小值之后,使得剩余的n-1个元素的序列重又建成一个堆,则得到n哥元素中的次小值,如此反复执行,便能得到一个有序序列,这个过程称之为堆排序。实现步骤将原始序列调整为最小或者最大堆序列,从而建立初始堆;将堆顶元素与序列的最后一个元素进行交换;去掉最后一个元素,将剩下的序列重新调整成为一个最小或者最大堆序列;重复2和3,直到堆中只有一个元素为止。算法实现代码在xcod 阅读全文
归并排序(MergeSort)
2014-01-03 12:50 by 江湖么名, 244 阅读, 0 推荐, 收藏, 编辑
摘要:原帖:http://blog.csdn.net/magicharvey/article/details/10192933算法描述归并排序(MergeSort)是采用分治法的一个非常典型的应用。通过先递归的分解数组,再合并数组就完成了归并排序。基本思想归并排序是将整个集合问题分解成最小单元,将该单元内的元素全部排序,然后将相邻的单元重新排序。如果将n1,n2看做一个整体n的话,则针对n,先对其一半进行排序,另一半排序,然后整体再次排序。实现步骤递归的将数组分为两个子数组,每个子数组重新分为两个子数组,直到数组个数为1为止;将相邻的两个有序数组合并为一个有序数组;最终直到剩下两个有序子数组,将其合 阅读全文
快速排序(QuickSort)
2014-01-03 12:46 by 江湖么名, 201 阅读, 0 推荐, 收藏, 编辑
摘要:算法描述快速排序(Quick Sort)属于冒泡排序的一种变形。快速排序是一种不稳定性的排序。基本思想通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另外一部分的关键字小,则可分别对这部分记录继续进行排序,直至整个序列有序为止。实现步骤最左边的元素作为参照数据;小于参照数据的集合作为左边的子集合,大于参照数据的集合作为右边的子集合分别对左右子集合进行快速排序;直到所有的序列是有序为止。算法实现代码在xcode中验证,可以直接使用//通过一趟排序,将记录分为两部分,左边部分小于a[begin], 右边部分大于a[begin]int Q_Sort(int a[], int be 阅读全文
基本-正则表达式
2014-01-03 12:40 by 江湖么名, 230 阅读, 0 推荐, 收藏, 编辑
摘要:原帖:http://www.cnblogs.com/rayguo/p/3478613.html我们在做爬虫的时候,要提取网页的信息,一个网页中的信息可能有很多,我们要去筛选,例如我们要获取一个网页中的所有子链接,这个就需要我们用正则表达式去匹配,匹配后得到的数据我们要的东西了,下面简单介绍一下,学过的可以当复习,没学过的就好好看看。 正则表达式:是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串,简单说,就是我们写个模板,然后去匹配字符串。 下面我们来看看一些基本的正则表达式的语法: \:将下个字符标记为一个特殊的字符、一个原义字符、一个向后引用或者一个八进制转义符例如“... 阅读全文
2.5亿个整数中找出不重复的整数
2014-01-03 11:20 by 江湖么名, 1103 阅读, 0 推荐, 收藏, 编辑
摘要:问题描述:在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。 思路:采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存2^32*2bit=1GB内存,还可以接受。然后扫描这2.5亿个整数,查看Bitmap中相对应位,如果是00变01,01变10,10保持不变。扫描后,查看bitmap,把对应位是01的整数输出即可。 阅读全文
python time模块详解
2013-12-21 17:37 by 江湖么名, 323 阅读, 0 推荐, 收藏, 编辑
摘要:python 的内嵌time模板翻译及说明 一、简介 time模块提供各种操作时间的函数 说明:一般有两种表示时间的方式: 第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的 第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同 year (four digits, e.g. 1998) month (1-12) day (1-31) hours (0-23) minutes (0-59) seconds (0-59) weekday (0-6, Monday is 0 阅读全文
python时间模块
2013-12-21 17:36 by 江湖么名, 247 阅读, 0 推荐, 收藏, 编辑
摘要:关于python时间模块问题#:当前时间时间戳 1312181113.31print(time.time())#将字符串转成时间戳ts = '2011-08-01 14:15:40'b = time.mktime(time.strptime(ts,'%Y-%m-%d %H:%M:%S'))print(b)#返回指定时间的时间戳使用mktimed = datetime.datetime(1997,12,29,15,59,59)t = d.timetuple()#再转为元组print(time.mktime(t))#使用time的mktime方法返回时间戳#将时间戳 阅读全文