数据结构与算法
炎枫coeus
这个作者很懒,什么都没留下…
展开
-
排序-快速排序
时间:快排就平均时间而言,可以算是内部排序中最好的一种。其平均时间复杂度O(nlog(n)),但是若初始序列基本有序,则快排退化为冒泡排序,时间复杂度O(n^2)。针对这种情况的改进方法一是用“三者取中”来选取枢轴记录,即比较arr[low],arr[high],arr[(low+high)/2],取中间值为枢轴记录,此法可以改善在最坏条件下的性能。方法二是改进一次划分函数Partit原创 2014-03-28 11:07:00 · 601 阅读 · 0 评论 -
求数组中最长递增子序列
根据《编程之美》中解法二的思路,发现记录LIS原创 2014-07-06 17:24:50 · 590 阅读 · 0 评论 -
打印1到最大的n位数(循环方法)
看到《剑指offer》的第12题是用递归完成的原创 2014-05-30 21:18:02 · 659 阅读 · 0 评论 -
单链表头结点的作用
数据结构中,在单链表的开始结点之前附设一个类型相同的结点,称之为头结点。头结点的数据域可以不存储任何信息,头结点的指针域存储指向开始结点的指针(即第一个元素结点的存储位置)。作用:1、防止单链表是空的而设的.当链表为空的时候,带头结点的头指针就指向头结点.如果当链表为空的时候,单链表没有带头结点,那么它的头指针就为NULL.2、是为了方便单链表的特殊操作,插入在表头或者删除第一个结点.转载 2014-03-27 11:57:57 · 7633 阅读 · 0 评论 -
实现(1)-顺序表
因为马上要毕业找工作了,平时从事dsp等底层软件的开发,根本没有学习数据结构。前段时间被网易游戏鄙视了,现在下定决心要认真学习数据结构。贴上用vs2010写的代码,记录学习过程,参考用书为严蔚敏的c数据结构。为方便输出,都使用c++的io流。#include #include using namespace std;#define LIST_INIT_SIZE 10#原创 2014-03-27 11:50:47 · 528 阅读 · 0 评论 -
并查集实现等价类
等价关系:集合或类(以集合为例)上的等价关系R指一个具有自反, 对称, 传递性的二元关系。等价类: 在一个定义了等价关系的集合中可以按该等价关系分成等价类(即两个元素只要有xRy, 则它们属于同一等价类), 即集合的一些子集组成的集,。容易证明这些等价类两两不交且其并等于原集合. 假设集合S有n个元素,m个形如(x,y) (x,y 属于 S)的等价偶对确定了等价关系R,如何求S的划分,即该如何求S转载 2014-03-25 10:51:53 · 1119 阅读 · 0 评论 -
KMP字符串模式匹配
KMP字符串模式匹配详解来自CSDN A_B_C_ABC 网友KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。一. 简单匹配算法先来看一个简单匹配算法的函数:int Index_BF ( char S [ ], char T [ ], int po转载 2014-03-24 10:51:30 · 427 阅读 · 0 评论 -
单链表-环
题目:0.如何判断单链表里面是否有环?算法的思想是设定两个指针p, q,其中p每次向前移动一步,q每次向前移动两步。那么如果单链表存在环,则p和q相遇;否则q将首先遇到null。这里主要理解一个问题,就是为什么当单链表存在环时,p和q一定会相遇呢?假定单链表的长度为n,并且该单链表是环状的,那么第i次迭代时,p指向元素i mod n,q指向2i mod n。因此当i≡2i(转载 2014-03-20 16:35:52 · 439 阅读 · 0 评论 -
求二叉树中节点的最大距离
《编程之美》3.8题int findMaxDistance(NODE *pRoot){ static int maxDistance=-1; int leftDistance; int rightDistance; if(pRoot==NULL) { return -1; } leftDistance=findMaxDistance(pRoot->left)+原创 2014-07-07 22:05:43 · 533 阅读 · 0 评论