算法
文章平均质量分 78
Scandinavians
明天会更好!
展开
-
红黑树(RED-BLACK TREE)的插入和删除
红黑树的左旋和右旋原创 2014-07-12 16:06:45 · 875 阅读 · 0 评论 -
子数组之和的最大值(二维)
解法一:遍历,穷举。代码一:原创 2014-08-06 21:44:01 · 408 阅读 · 0 评论 -
求数组中最长递增子序列
《编程之美》 2.16问题:写一个时间复杂度尽可能di原创 2014-08-07 18:49:47 · 457 阅读 · 0 评论 -
利用快速排序中的切分函数寻找数组主元素
如果一个数组A[1..n]中超过半数的元素都相同时,该数组被称为含有主元素。原创 2014-06-24 17:47:49 · 595 阅读 · 0 评论 -
数组分割
《编程之美》 2.18 数组分割原创 2014-08-08 19:06:27 · 529 阅读 · 0 评论 -
计算字符串的相似度
《编程之美》 3.3 计算字符串的相似度原创 2014-08-09 04:29:37 · 545 阅读 · 0 评论 -
点是否在三角形内
《编程之美》 4.4 点是否在sanjiaoxingnei原创 2014-08-09 03:05:00 · 639 阅读 · 0 评论 -
求二叉树中节点的最大距离
《编程之美》 3.8 求二叉树节点中的zuida原创 2014-08-09 23:58:14 · 420 阅读 · 0 评论 -
希尔排序的Python实现
代码:#! /usr/bin/env python#coding=utf-8import randomdef shell_sort_pass(lst,left,delta): for i in range(left+delta,len(lst),delta): pivot = lst[i] while (i > left and lst[i-d原创 2015-01-17 22:39:19 · 468 阅读 · 0 评论 -
计数、基数和桶排序的Python实现
计数排序:#! /usr/bin/env python#coding=utf-8import random,copyfrom collections import defaultdictdef count_sort(lst, key=lambda x: x): B,C = [], defaultdict(list) for x in lst: C[k原创 2015-01-17 22:51:22 · 636 阅读 · 0 评论 -
基本排序的Python实现
冒泡排序:#! /usr/bin/env python#coding=utf-8import randomdef bubble_sort_raw(seq): pass_cnt = len(seq) - 1 for i in range(pass_cnt): for j in range(len(seq)-i-1): if seq原创 2015-01-17 21:47:11 · 518 阅读 · 0 评论 -
单链表的翻转&倒数第K个结点&中间结点&对齐打印
单链表的翻转,见代码:void reverse(pNode *pList){ pNode pre,curr,nxt; pre = curr = nxt = NULL; for (curr = *pList; curr;nxt = curr->next,curr->next = pre,pre = curr,curr = nxt); *pList = pre;}需要san原创 2014-06-23 20:23:36 · 391 阅读 · 0 评论 -
两个字符串的最长公共子串(子串为连续的)
问题:求两个字符串的最长的公共子串,子串是连续原创 2014-07-01 01:56:51 · 1015 阅读 · 0 评论 -
寻找最大的K个数
问题:查找大量无序元素中最大的K个数。原创 2014-08-04 20:27:53 · 482 阅读 · 0 评论 -
伸展树
伸展树,是一种二叉排序树。它可以baozheng原创 2014-07-13 20:53:29 · 714 阅读 · 0 评论 -
牛顿迭代法求开方值
牛顿迭代法(Newton's method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之原创 2014-08-03 19:59:53 · 1007 阅读 · 0 评论 -
子数组的最大乘积
《编程之美》 2.13问题:geidi原创 2014-08-06 15:25:01 · 403 阅读 · 0 评论 -
1的数目
《编程之美 》2.4问题:给定一个十进制正整数N,写下从1kais原创 2014-08-04 16:05:06 · 416 阅读 · 0 评论 -
两个字符串的最长公共子序列(可以不连续)
问题:给定两个字符串,输出其最长公共子序列及其长度。解法:此问题为动态规划的经典问题。解题有固定套路利用二维数组C,和标志位数组FLAG(表示回溯方向):步骤一:构建二维数组,求得最长公共子序列的长度。步骤二:利用数组C构建数组FLAG。步骤三:利用初始字符串和FLAG回溯输出最长公共子序列。数组C的构建方式:回溯输出最长公共子序列过程:上图中的箭头即为原创 2014-07-01 18:25:52 · 1266 阅读 · 0 评论 -
最大公约数问题
解法1:辗转相除法。代码1:原创 2014-08-04 22:05:42 · 350 阅读 · 0 评论 -
N!的末尾有几个零以及二进制表示最右边1的位置
很经典的一道数学题:求n!后面有多少个0。 N的阶乘可以分解为: 2的X次方,3的Y次方,4的5次Z方,.....的成绩。由于10 = 2 * 5,所以M只能和X和Z有关,每一对2和5相乘就可以得到一个10,于是M = MIN(X,Z),不难看出X大于Z,因为被2整除的频率比被5整除的频率高的多。所以可以把公式简化为M=Z. 由上面的分析可以看出,只要计算处Z的值,就原创 2014-06-26 00:51:52 · 975 阅读 · 0 评论 -
求数组的子数组之和的最大值
问题:对于一个无序数组,数组中的每个元素可正可负,对于每一个子数组原创 2014-06-25 17:58:27 · 533 阅读 · 0 评论 -
斐波那契(Fibonacci)数列的求法
斐波那契数列是这样的一组数列:0,1原创 2014-06-26 02:56:57 · 1047 阅读 · 0 评论 -
快排、堆排和归并排序的Python实现
快速排序:#! /usr/bin/env python#coding=utf-8import random,copydef partition(lst,left,right): pivot = lst[left] pivot_index = left left = left + 1 while True: # when pivot as原创 2015-01-17 22:46:25 · 520 阅读 · 0 评论