数据结构与算法
gnuser
up,永不止步
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
二叉树学习
二叉树的递归思想是一大难点。自认为是容易遗忘的东西。简单问题:求n!, result = n*(n-1)*(n-2)......1自然循环可以解决问题int i,result;result = n;for (i=n-1; i>0; i--){ result *= n;}递归的写法就是:int fibonacci1(int n){ if (n == 1) return 1;原创 2008-09-23 16:29:00 · 699 阅读 · 0 评论 -
选择排序
空间复杂度为O(1)时间复杂度为O(n2)第一次在数组n个元素中选取最小值放在第一位第二次在n-1个元素中选取最小值放在第二位/* File: selectSort.cpp Time-stamp: Copyright: 2008 (C) waqy0816 Description:*/#include using namespace std;int cnt = 0; //计算次数void原创 2008-10-13 13:23:00 · 503 阅读 · 0 评论 -
快速排序
快速排序原理: 0 1 2 3 4 5 6 7data 28 4 36 2 65 14 55 17 Piv i j left rightleft.right 排序范围Pivot原创 2008-10-06 17:14:00 · 382 阅读 · 0 评论 -
冒泡排序
原理: data 37 96 8 54比较相邻两元素,第一次把最小的放在最左边data 8 96 37 54第二次在剩下的元素取最小的依次存放data 8 37 96 54第三次data 8 37 54 96排序完成空间复杂度为O(1),需要一个临时变量交换用时间复杂度为O(n2),适合已经部分排序的数组排序static int count = 0; //计算次数void Ou原创 2008-10-06 16:59:00 · 422 阅读 · 1 评论 -
递归题一
打印出已知字符串的所有排列组合,比如给出"abc",打印abc,acb,bac,bca,cab,cba.所有可能个数是n!,n为字符串长度。数学表达:E={e1,e2,e3,...en}.表示字符串的集合,令Ei为移去ei后的集合,perm(X)表示集合X的所有元素排列。ei.perm(X)表示在perm(X)的基础上加前缀ei.例如:E={a,b,c}, E1={b,c},perm(E1)={原创 2008-10-01 16:47:00 · 589 阅读 · 0 评论 -
数组结构
#define ERROR 0#define OK 1#define STUNUM 50#include #include struct STU{ char name[20]; char stuno[10]; int age; int score;}stu[STUNUM];typedef struct LIST{ struct STU stu[STUNUM];原创 2008-09-26 14:56:00 · 492 阅读 · 0 评论 -
struct结构赋值
int i=0;int j;j = i;这是可以理解的typedef struct stu{ char name[10]; char sno[10]; int score;}stu;stu a;strcpy(a.name, "gnuser");strcpy(a.sno, "0000001");a.score=59; // f***kstu b;b = a;现在b的内容也完全和a相原创 2008-09-26 14:10:00 · 1461 阅读 · 0 评论 -
二叉树深入学习
二叉树介绍 tonim 介绍 在这篇文章中,我介绍了二叉树和层级数据结构。在样例工程中,我比较了二叉树和快速排序。二叉树是用C++模板定义的。它可以用于支持C++的任何环境和支持比较运算符(<和>)的任何类型的数据。描述简单易懂。为了使用模板你需要在你的工程中包含BTreen.h。为了平衡和优化数据插入,我使用了一个简单的重排序算法来替代Red-Black和AVL转载 2008-09-24 13:43:00 · 756 阅读 · 0 评论 -
两种传递地址方法
1:void foo(int *a){ *a=10;}调用方法:int a;foo(&a);2:void foo1 (int &a){ a=20;}调用方法:int a;foo(a);产生的汇编代码代码是一样的。vc2003 debug编译如果传递的本身就是指针int *a;gcc下这样直接定义能编译通过,不用初始化,但多次运行可知这个地址是变化的,而vc2003直接将a地址赋为0xc原创 2008-09-23 15:31:00 · 887 阅读 · 0 评论 -
堆排序
需要掌握的知识: 大根堆 根节点的值始终大于孩子节点的值的树结构如下 9 / / 8 6 / / / / 7 1 4 2 /3然后每次用根节点与最后一个节点替换,并用剩下的节点构造大根堆时间复杂度为O(n*logn)#include using namespace std;int cnt = 0; //计算次数void Output(int array[],原创 2008-10-13 16:54:00 · 556 阅读 · 2 评论
分享