06 2013 档案

摘要:顺序统计RandomizedSelect 阅读全文
posted @ 2013-06-28 23:18 Scott Lewis 阅读(515) 评论(1) 推荐(0) 编辑
摘要:今天贴出的算法是计数排序Counting Sort。在经过一番挣扎之前,我很纠结,今天这个算法在一些scenarios,并不是最优的算法。最坏情况和最好情况下,时间复杂度差距很大。 阅读全文
posted @ 2013-06-27 21:57 Scott Lewis 阅读(287) 评论(0) 推荐(0) 编辑
摘要:昨天讨论的随机化快排对有重复元素的数组会陷入无限循环。今天带来对其的优化,使其支持重复元素。 只需修改partition函数即可 阅读全文
posted @ 2013-06-24 22:08 Scott Lewis 阅读(491) 评论(0) 推荐(0) 编辑
摘要:今日算法:随机化快排RandomizedQuickSort 基础工作swap交换和partition分治/* *交换数组的两个元素 *fromIndex和toIndex为要交换的两个元素的索引 */ void swap(int *numArray,int fromIndex,int toIndex) { int temp=numArray[fromIndex]; numArray[fromIndex]=numArray[toIndex]; numArray[toIndex]=temp; } int pa... 阅读全文
posted @ 2013-06-24 00:10 Scott Lewis 阅读(547) 评论(0) 推荐(0) 编辑
摘要:前言: 很多朋友看到我写的《算法导论》系列,可能会觉得云里雾里,不知所云。这里我再次说明,本系列博文时配合《算法导论》一书,给出该书涉及的算法的c++实现。请结合《算法导论》一书阅读该系列博文。我这里有该书的电子版,有需要的朋友可以留言。正题: 今天讨论的算法是矩阵乘法的Strassen算法,该算法的精髓在于减少n/2矩阵*n/2矩阵的次数。首先,作一些写该算法的基础工作:/* * 矩阵的加法运算 */ void Add(int** matrixA, int** matrixB, int** matrixResult,int length) { for... 阅读全文
posted @ 2013-06-22 22:41 Scott Lewis 阅读(1818) 评论(0) 推荐(0) 编辑
摘要:今天我们讨论的算法是最大子数组问题。 首先我定义了一个类用来保存最大子数组的开始位置索引、结束位置索引和该数组的和。代码如下:class MaximumSubArray { private: int begin; //开始位置索引 int end; //结束位置索引 int sum; //和 public: void setBegin(int Begin) { begin=Begin; } void setEnd(int End) ... 阅读全文
posted @ 2013-06-20 23:31 Scott Lewis 阅读(295) 评论(0) 推荐(0) 编辑
摘要:前言: 在今后的日子里,我将持续更新博客,讨论《算法导论》一书中的提到的各算法的C++实现。初来乍到,请多指教。今日主题: 今天讨论《算法导论》第二章算法基础中的归并排序算法。下面是该算法的代码Merge.h: #include <stdlib.h>namespace dksl{ /* * 归并 * numArray为整形数组 * head为要归并的数组的开始位置索引 * waist为要归并的数组的中间位置索引 * tail-1为要归并的数组的结束位置索引 */ void merge(int *numArray,const int head,const int waist,cons 阅读全文
posted @ 2013-06-19 22:43 Scott Lewis 阅读(366) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示