posted @ 2018-10-12 17:55 阿牧路泽 阅读(240) 评论(0) 推荐(0)
摘要:
一、选择排序介绍 选择排序(Selection sort)是一种简单直观的排序算法。它的基本思想是:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 二、 阅读全文
摘要:
一、希尔排序介绍 希尔排序(Shell Sort)是插入排序的一种,它是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。 希尔排序实质上是一种分组插入方法。它的基本思想是:对于n个待排序的数列,取一个小于n的整数gap(gap被称为步长)将待排序元素分成 阅读全文
posted @ 2018-10-12 17:52 阿牧路泽 阅读(720) 评论(0) 推荐(0)
摘要:
一、直接插入排序介绍 直接插入排序(Straight Insertion Sort)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表。开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n 阅读全文
posted @ 2018-10-12 17:46 阿牧路泽 阅读(431) 评论(0) 推荐(0)
摘要:
一、快速排序介绍 快速排序(Quick Sort)使用分治法策略。它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据都比另外一部分的所有数据都要小。然后,再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 阅读全文
posted @ 2018-10-12 17:41 阿牧路泽 阅读(368) 评论(0) 推荐(0)
摘要:
不使用第三个变量交换两个数的值 mian.cpp 阅读全文
posted @ 2018-10-12 17:28 阿牧路泽 阅读(200) 评论(0) 推荐(0)
摘要:
一、冒泡排序简介 它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,则交换它们的位置。这样,一次遍历之后,最大的元素就在数列的末尾! 采用相同的方法再次遍历时,第二大的元素就被排列在最大元素之前。重复此操作,直到整个数列都有 阅读全文
posted @ 2018-10-12 16:58 阿牧路泽 阅读(176) 评论(0) 推荐(0)
摘要:
一、哈夫曼树的介绍 Huffman Tree,中文名是哈夫曼树或霍夫曼树,它是最优二叉树。 定义:给定n个权值作为n个叶子结点,构造一棵二叉树,若树的带权路径长度达到最小,则这棵树被称为哈夫曼树。 (1) 路径和路径长度 定义:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。 阅读全文
posted @ 2018-10-12 15:55 阿牧路泽 阅读(490) 评论(0) 推荐(0)
摘要:
一、R-B Tree简介 R-B Tree,全称是Red-Black Tree,又称为“红黑树”,它一种特殊的二叉查找树。红黑树的每个节点上都有存储位表示节点的颜色,可以是红(Red)或黑(Black)。即:红黑树的每个节点上的属性除了有一个key、3个指针:parent、lchild、rchild 阅读全文
posted @ 2018-10-12 15:47 阿牧路泽 阅读(245) 评论(0) 推荐(0)
摘要:
一、AVL树的介绍 AVL树是高度平衡的而二叉树。 它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 二、AVL树的C++实现 1. 节点 1.1 AVL树节点 AVLTreeNode是AVL树的节点类,它包括的几个组成对象: (1) key -- 是关键字,是用来对AVL树的节点进行排 阅读全文
posted @ 2018-10-12 15:32 阿牧路泽 阅读(531) 评论(0) 推荐(0)
摘要:
一、树的介绍 1. 树的定义 树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。 把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: (1) 每个节点有零个或多个子节点; (2) 没有父节点的节点称为根节点; (3) 每一个非根节 阅读全文
posted @ 2018-10-12 14:48 阿牧路泽 阅读(978) 评论(0) 推荐(0)
浙公网安备 33010602011771号