优秀的程序员会告诉你打根基的重要性,会劝你在厚积薄发前要隐忍。+++基础的分割线+++编程语言,《程序设计语言-实践之路》《concepts of programming languages》计算机通用知识,《csapp》算法、数据结构,《算法导论》程序设计、结构,没有书推荐软件工程,这个词大家理解...
分类:
其他好文 时间:
2015-02-11 01:46:33
阅读次数:
1192
假设要转载,须要注明出处:http://blog.csdn.net/xiazdong本文是http://blog.csdn.net/xiazdong/article/details/7304239的补充,当年看了《大话数据结构》总结的,可是如今看了《算法导论》,发现曾经对排序的理解还不深入,所以打算...
分类:
编程语言 时间:
2015-02-10 18:42:00
阅读次数:
253
题目:在线性时间内非递归的求数组的最大连续子数组(连续和最大的子数组)。思路:设最大子数组的和为max,起点和终点位置为s、e,正在扫描的子数组的和为add,起点和终点位置为i、j。max的初始值为-∞。 1.若数组的值全为负,则返回最大值。 2.逐个扫描数组元素,更新add、i、j的值...
分类:
编程语言 时间:
2015-02-10 14:52:28
阅读次数:
204
#include #include #include #ifdef __linux
#include #include #endif void swap(int64_t* A, uint64_t i, uint64_t j)
{ int64_t tmp = A[i]; A[i] = A[j]; A[...
分类:
编程语言 时间:
2015-02-10 13:04:20
阅读次数:
235
题目:给出一个确定在n个不同元素的任何排列中逆序对数量的算法,最坏情况需要Θ(nlgn)时间。(提示:修改归并排序。)思路:修改从大到小排序的归并排序。 归并排序分为三步:分解、解决、合并。 分解:将排列A分解为A1、A2两个子排列。 解决:递归的从大到小排列A1和A2,在此同样递归的求解A1...
分类:
编程语言 时间:
2015-02-10 11:02:33
阅读次数:
251
以下摘自网络 随机化快排:快速排序的最坏情况基于每次划分对主元的选择。基本的快速排序选取第一个元素作为主元。这样在数组已经有序的情况下,每次划分将得到最坏的结果。一种比较常见的优化方法是随机化算法,即随机选取一个元素作为主元。这种情况下虽然最坏情况仍然是O(n^2),但最坏情况不再依赖于输入数据,而...
分类:
编程语言 时间:
2015-02-10 10:33:02
阅读次数:
257
#include #include #ifdef __linux
#include #endif
// MINIMUM(A)
// MIN = A[1]
// for i = 2 to A.length
// if min > A[i]
// min = A[i]
// return min int...
分类:
编程语言 时间:
2015-02-09 21:26:03
阅读次数:
373
本文是http://blog.csdn.net/xiazdong/article/details/7304239的补充,当年看了《大话数据结构》总结的,但是现在看了《算法导论》,发现以前对排序的理解还不深入,所以打算对各个排序的思想再整理一遍。本文首先介绍了基于比较模型的排序算法,即最坏复杂度都在Ω...
分类:
编程语言 时间:
2015-02-07 22:56:07
阅读次数:
314
线段树(1)http://www.cnblogs.com/fu11211129/p/4230000.html1. 线段树应用之动态点插与统计:--------------------------------线段树(1)中讲的应用是区段的插值与统计,我们在线段树结构体中接入cover之一域,cover...
分类:
编程语言 时间:
2015-02-06 13:03:14
阅读次数:
275
一. 动态规划动态规划(dynamic programming),与“分治思想”有些相似,都是利用将问题分 为子问题,并通过合并子问题的解来获得整个问题的解。于“分治”的不同之处在 于,对于一个相同的子问题动态规划算法不会计算第二次,其实现原理是将每一个计算过的子问题的值保存在一个表中。二. 记忆化...
分类:
编程语言 时间:
2015-02-06 00:44:25
阅读次数:
241