
数据结构与算法
sunshineofbeach
脚踏实地
展开
-
排序算法
要写的一些东西:快速排序的版本原创 2014-10-20 16:15:34 · 504 阅读 · 0 评论 -
两链表的第一个公共结点->二叉树两结点的最近共同父结点
题目:两个单向链表,找出它们的第一个公共结点。链表的结点定义为:struct ListNode{ int m_nKey; ListNode* m_pNext;};分析:这是一道微软的面试题。微软非常喜欢与链表相关的题目,因此在微软的面试题中,链表出现的概率相当高。如果两个单向链表有公共的结点,也转载 2014-09-12 17:30:02 · 467 阅读 · 0 评论 -
计数排序
计数排序是一种算法复杂度 O(n) 的排序方法,适合于小范围集合的排序。比如100万学生参加高考,我们想对这100万学生的数学成绩(假设分数为0到100)做个排序。我们如何设计一个最高效的排序算法。本文不光给出计数排序算法的传统写法,还将一步步深入讨论算法的优化,直到时间复杂度和空间复杂度最优。先看看计数排序的定义Counting sort (sometimes referred转载 2014-09-12 21:58:36 · 389 阅读 · 0 评论 -
判断链表是否存在环
给定一个单链表,只给出头指针h,不知道表的长度:1、判断单链表是否存在环?2、如果存在环,怎样找出环的入口点?3、如果存在环,计算环的长度和带环链表的长度是多少??1、判断链表是否存在环:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环原创 2015-01-15 10:27:30 · 607 阅读 · 0 评论 -
堆排序
堆排序引入了另外一种算法设计技术:利用某种数据结构(在此算法中为“堆”)来管理算法执行中的信息。一、堆堆简介我们通常使用的堆的二叉堆,它是一种数组对象,可以被视为一棵完全二叉树。树中的每个节点与数组中的节点相对应。如下图所示:表示堆的数组通常由两个属性:数组中元素的个数length[A],存放在A中的堆的元素的个数heap-size[A]。也就是说存转载 2014-09-12 14:01:17 · 566 阅读 · 0 评论 -
集装箱问题(回溯法)
#include #define N 3int w[3]={10,40,40};//3个物体的载重量int c=70;//轮船的总载重量int cw ; //当前获得的载重量int bestw ;// 最优的载重量int r=90; //剩余箱子的总重量int x[3]={0}; //记录某一个可行解的路径int bestx[3]={0};//记录最优解的路径v原创 2012-10-27 11:05:15 · 3855 阅读 · 0 评论 -
电路布线
电路布线【问题描述】在一块电路板的上、下两端分别有n个接线柱。根据电路设计,要求用导线(i,π(i))将上端接线柱i与下端接线柱π(i)相连,如图所示。其中,π(i),1是{1,2,…,n}的一个排列。导线(i,π(i))称为该电路板上的第i条连线。对于任何1π(j)。在制作电路板时,要求将这n条连线分布到若干绝缘层上。在同一层上的连线不相交。你的任务是要确定将转载 2012-10-14 16:27:57 · 862 阅读 · 0 评论 -
最长公共子序列
动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。【问题】 求两字符序列的最长公共字符子序列问题描述转载 2012-10-08 20:24:11 · 459 阅读 · 0 评论 -
整数划分问题
整数划分问题是算法中的一个经典命题之一,有关这个问题的讲述在讲解到递归时基本都将涉及。所谓整数划分,是指把一个正整数n写成如下形式:n=m1+m2+...+mi; (其中mi为正整数,并且1 如果{m1,m2,...,mi}中的最大值不超过m,即max(m1,m2,...,mi)例如但n=4时,他有5个划分,{4},{3,1},{2,2},{2,1,1},{1,1,1,1};转载 2012-10-08 20:20:33 · 546 阅读 · 0 评论 -
计数排序
计数排序: 我们假设有一个待排序的整数序列A,它的范围是在0-K之间,K表示的是整数序列的最大值 算法的思路是用长度为K的数组C,记录对于数组A的每个数不大于这个数的元素的个数 算法步骤: 1.遍历数组A,以A中的每个元素值为所以,把出现的个数填入数组C中,C[A[i]]表示元素为A[i]的个数 2.遍历数组C,C[i] +=原创 2015-03-03 17:00:13 · 407 阅读 · 0 评论