数据结构与算法之基础知识
微信搜一搜「bigsai」一直分享干货 文章已收录在 我的Github bigsai-algorithm 前言 数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运 ... »
微信搜一搜「bigsai」一直分享干货 文章已收录在 我的Github bigsai-algorithm 前言 数据结构与算法是程序员内功体现的重要标准之一,且数据结构也应用在各个方面,业界更有程序=数据结构+算法这个等式存在。各个中间件开发者,架构师他们都在努力的优化中间件、项目结构以及算法提高运 ... »
逻辑是数学的少年时代,数学是逻辑的成年时代。 ——罗素 “递归” 这是在程序、算法设计中的基础和重中之重。当初理解这一点我也花费了不少时间,对于初学者来说,如何生动形象的展现着一过程,成了理解着一思想的关键。 这篇博文的来由,源于同学问我的一个问题: 我一看啊,这波,这波是明显的递归啊!! 我想着, ... »
引言 常用排序算法共有十种,堆排序在前面的章节已经介绍过,本章主要介绍九种常用排序算法。排序算法分为以下几种类型: 非线性时间比较类排序 1. 交换排序:冒泡排序和快速排序 2. 插入排序:简单插入和希尔排序 3. 选择排序:简单选择和堆排序 4. 归并排序:二路归并排序和多路归并排序 线性时间非比 ... »
引言 在字符检索中我们常用到一种数据结构——Trie树,它是一种树形结构,其应用相当广泛,如: 自动补全 拼写检查 打字预测 单词游戏 在看这篇文章之前,读者们可以先复习一下树形结构的知识,不然可能会有些吃力,但如果熟悉树,你将能十分轻松的阅读下去。 前缀(Trie)树的基本概念 Trie树是一个有 ... »
引言 前文介绍的树中,元素的关系是一对多,本章介绍一种多对多的数据结构——图。 图的定义 一个图是一个二元组G=(V,E),其中: V是非空有穷的顶点集合; E是定点偶对(边)的集合,E是V×V的子集 V的中的顶点称为图G的顶点,E中的边称为图G的边 图示: 上图被称为有向图,有向图的边有方向,是顶 ... »
引言 本节将介绍最后一个链表的变形——双向循环链表,这一结构在双向链表的基础上优化了对尾部节点的插入/删除效率。 双向循环链表 基本操作基本与双向链表类似,但是要注意每个操作都要考虑到首尾节点的指针。 Python实现: class DoublyListNode(): def __init__(se ... »
原文链接:面试官:手撕十大排序算法,你会几种? 演示地址:点击查看演示 在前面三期,介绍了动态规划的两个主要特性:交叠子问题和最优子结构,并用七种方式求解第n项斐波那契数,感受了算法的强大,你是否也领略到它的精髓呢? 《深入浅出理解动态规划(一) | 交叠子问题》 《深入浅出理解动态规划(二) | ... »
什么是排序? 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。 1.排序的分类 排序分为两类: 内部排序:若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。 外部排序:若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类 ... »
一、迷宫回溯问题 1.问题 一个7*8的数组模拟迷宫,障碍用1表示,通路使用0表示,给定起点(1,1)和终点(6,5),要求给出起点到终点的通路 2.解题思路 首先,我们需要给程序一个寻向的基本策略,我们先假定寻向顺序为“下-右-上-左”,也就是说从起点出发,先往下走,往下走不通就往右.....以此 ... »
题目 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nod ... »
题目 Being unique is so important to people on Mars that even their lottery is designed in a unique way. The rule of winning is simple: one bets on a nu ... »
题目 Given a string, you are supposed to output the length of the longest symmetric sub-string. For example, given Is PAT&TAP symmetric?, the longest sy ... »
题目 Zhejiang University has 40000 students and provides 2500 courses. Now given the student name lists of all the courses, you are supposed to output t ... »
题目 Given a collection of number segments, you are supposed to recover the smallest number from them. For example, given { 32, 321, 3214, 0229, 87 }, w ... »
项目需求 设计要求 功能选择可以用菜单来实现,用户根据自己 的选择进入不同的菜单 程序不要求将信息保存到文件中,程序开始时职员信息为空,用户需要先增加职员信息,之后才可以实现查找、删除、浏览等功能。 职员信息的关键字为职员的职员号,加入时职员号重复的记录不能加入。查找删除按照职员号进行。 选择删除功 ... »
题目 This time you are asked to tell the difference between the lowest grade of all the male students and the highest grade of all the female students. ... »
题目 With highways available, driving a car from Hangzhou to any other city is easy. But since the tank capacity of a car is limited, we have to find ga ... »
题目 To store English words, one method is to use linked lists and store a word letter by letter. To save some space, we may let the words share the sam ... »
题目 Given an increasing sequence S of N integers, the median is the number at the middle position. For example, the median of S1 = { 11, 12, 13, 14 } i ... »
[TOC] 快速排序 给定一个序列: 进行快速排序 主要思想 从序列中,任选一个记录 作为 轴值 选择策略: 第一个元素 最后一个元素 中间元素 随机选择 将剩余的元素,分割成 左子序列 L 和 右子序列 R L 中所有元素都 k 对 L 和 R递归进行快排,直到子序列中有 0 个 或者 1 个元素 ... »