
算法与数据结构
zhangqiushui
已经转移到新博客cppblog(http://www.cppblog.com/aurain)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【转wishfly的专栏】经典的全排列算法
输入一个字符串,输出字符串所有可能的组合,不能有重复如:cat输出 cat cta act atc tac tcaaac输出 aac aca caa =======================================================经典的全排列算法void Perm(char *a, int begin, int end) /* 产生begin到end的全排列原创 2005-12-20 00:00:00 · 886 阅读 · 0 评论 -
AVL树
AVL树称为自平衡二叉查找书。其中任何节点的两个子树的高度最大差别为一。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 节点的平衡因子是它的右子树的高度减去它的左子树的高度。平衡因子为 1、0 或 -1 的节点被认为是平衡的。平衡因子为 -2 或 2 的节点被认为是不平衡的,并需要重新平衡这个树。平衡因子可以直接存原创 2007-09-04 13:47:00 · 1475 阅读 · 0 评论 -
用贪心算法解背包问题
#include typedef struct _goodInfo{ float v; //物品效益 float w; //物品重量 float x; //物品该放的数量 int flag; //物品编号}goodInfo;//按照物品效益对物品进行插入排序void InsertSort(goodInfo goods[], int n){ int i,j; for (j=2;原创 2007-05-14 15:44:00 · 751 阅读 · 0 评论 -
软件开发文档
如今,软件开发越来越复杂,软件功能也越来越丰富。而几乎所有成熟的商业软件,都是靠一个开发团队齐心协力的血汗结晶。“罗马不是一天建成的!”,当我们震撼于Microsoft Windows的惊世巨著的同时,也道听途说了微软公司软件工程是如何的完善规范。的确,集数百名员工几年的共同努力之大成,软件项目管理的成败是控制开发成本的关键环节。这里面,少不了贯穿其中的重要步骤----软件文档。 软件文档原创 2007-08-01 10:29:00 · 1811 阅读 · 0 评论 -
冒泡排序算法
冒泡排序算法的关键是每次循环把最大的数放到最后一个位置,算法的时间复杂度为o(n^2).在下面的算法中,用到了一个变量b_done,它用来监督一趟比较下来,有没有发生交换,如果没有产生交换,说明原始的数据是已经排好序的,j就不用再增加了,整个算法结束。#include "stdafx.h"void bubble_sort(int list[], int n){ int i; in原创 2007-07-25 17:05:00 · 843 阅读 · 0 评论 -
选择排序算法
选择排序算法是每次从数列中取出最小的一个数,把其放到数组的首位。注:首位从第一个位置开始,每次循环往前加一位。void select_sort(int list[], int n){ int i; int j; int tmp; int min; for (i=0; i { min = i; for (j=i; j { if (list[j] { min = j;原创 2007-07-25 17:16:00 · 818 阅读 · 0 评论 -
百度笔试题
一、选择题:15分 共10题 1. 已知一个线性表(38,25,74,63,52,48),采用的散列函数为Hash($Key)=$Key mod 7,将元素散列到表长为7的哈希表中存储。请选择后面两种冲突解决方法分别应用在该散列表上进行等概率成功查找的平均查找长度,拉链法 ,线性探测法 . A. 1.0 B. 1.5 C. 1.7原创 2007-04-24 15:46:00 · 1552 阅读 · 0 评论 -
24点算法
#include typedef float (__cdecl *TYPE_MYFUN)(float , float );float FunAdd(float x, float y){ return x + y;}float FunSub(float x, float y){ return (x - y>0)?x-y:y-x;}float FunMul(float x, float原创 2007-04-25 10:57:00 · 603 阅读 · 0 评论 -
蛇形矩阵
/* 1 2 3 412 13 14 511 16 15 610 9 8 7*/void func(int n)要求:通过传入的n,输出一个4*4的矩阵, 顺序如上图所示. #include #define N 10int a[N][N];void func(int n){ int i,j; int num = 0; for (i=0;i { fo原创 2007-04-24 20:31:00 · 1036 阅读 · 1 评论 -
快速排序算法与实现(c++)
快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。算法的基本思想 快速排序的基本思想是基于分治策略的。对于输入的子序列p[m..n],如果规模足够小则直接进行排序,否则分三步处理:原创 2007-09-30 10:59:00 · 1599 阅读 · 1 评论