常用排序算法

引言 常用排序算法共有十种,堆排序在前面的章节已经介绍过,本章主要介绍九种常用排序算法。排序算法分为以下几种类型: 非线性时间比较类排序 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.解题思路 首先,我们需要给程序一个寻向的基本策略,我们先假定寻向顺序为“下-右-上-左”,也就是说从起点出发,先往下走,往下走不通就往右.....以此 ... »

C语言实现的简单公司职员信息管理系统

项目需求 设计要求 功能选择可以用菜单来实现,用户根据自己 的选择进入不同的菜单 程序不要求将信息保存到文件中,程序开始时职员信息为空,用户需要先增加职员信息,之后才可以实现查找、删除、浏览等功能。 职员信息的关键字为职员的职员号,加入时职员号重复的记录不能加入。查找删除按照职员号进行。 选择删除功 ... »

数据结构与算法 排序算法 快速排序【详细步骤图解】

[TOC] 快速排序 给定一个序列: 进行快速排序 主要思想 从序列中,任选一个记录 作为 轴值 选择策略: 第一个元素 最后一个元素 中间元素 随机选择 将剩余的元素,分割成 左子序列 L 和 右子序列 R L 中所有元素都 k 对 L 和 R递归进行快排,直到子序列中有 0 个 或者 1 个元素 ... »