各种排序算法概括

希尔排序、插入排序、快速排序为不稳定算法。 排序稳定性定义: 在排序前,当a[i]=a[j],它们之间的前后相对顺序在排序后仍旧是相同的,则排序是稳定的 即当a[i]=a[j]时,如果a[i]在排序之前在a[j]前面,在排序之后仍然在a[j]前面,则算法是稳定的;如果在排序之后变为了a[...

2018-04-10 01:22:41

阅读数 104

评论数 0

二叉树先序、中序、后序的非递归遍历写法

 三种写法均需要借助栈,先序和中序相对较简单, 后序需要借助一个标志位,因为对一个节点,当他存储进栈之后,首先要遍历一遍它的左子树,然后再遍历一遍它的右子树, 当其右子树存在时,需要判断其右子树是否已经遍历过,处理方式就是当它的左子树遍历完全之后正在遍历右子树时,更改它的标志位,表示其正在遍历...

2018-11-22 18:10:54

阅读数 49

评论数 0

队列

因为队列对元素变动较大,可以使用链表实现,为链式队列,包含一个单链表和指向队头和队尾的两个指针。 头文件: template <class T> struct Node { T data; Node&...

2018-11-21 18:01:08

阅读数 40

评论数 0

栈底层可以为为一维数组存储实现,包含一个指向栈顶的指针。也可以是用链表实现链式栈。 头文件: const int StackSize = 100; template <class T> class Stack { public: ...

2018-11-21 15:47:11

阅读数 35

评论数 0

链表

数组的两大缺点: 需要预先分配空间,使用不充分会造成浪费 插入或删除时需要移动大量元素 链表特点: 逻辑上相邻的前后元素,物理上不一定相邻,实际存储位置可能相隔很远。数组可通过第一个元素位置计算得到第n个元素位置,链表只能通过前后元素位置相互查找 链表插入和删除元素不需要像数组一样移动大量...

2018-11-20 01:18:56

阅读数 26

评论数 0

数组

头文件: const int MaxSize = 100; template<class T> class SeqList { private: T data[MaxSize]; ...

2018-11-19 20:21:13

阅读数 38

评论数 0

平衡二叉树

一般所称呼的平衡二叉树,在不作特别声明时,就是指的平衡二叉排序树,也称为AVL树。 平衡因子:对于任一节点,其左子树的高度减去右子树的高度,就是该节点的平衡因子。 对平衡二叉树,所有节点的平衡因子只能是-1,0,1.而对一颗不平衡二叉树,至少有一个节点的平衡因子绝对值大于1. 构造平衡二叉树...

2018-11-09 22:09:55

阅读数 47

评论数 0

二叉搜索树的构建、插入、删除、查找

#include <bits/stdc++.h> using namespace std; typedef int KeyType; struct TreeNode { KeyType val; TreeNode* le...

2018-11-09 21:14:23

阅读数 156

评论数 0

散列表

理想的查找方式就是不通过比较,就能根据所查关键码直接得到待查记录的存储位置。散列查找技术便是朝着这种方向建立的。散列表通过散列函数在关键码和存储位置之间建立一个对应关系,由关键码就可以直接获得存储地址。 散列(hash)函数也叫哈希函数,装填因子:表中将填入的记录数/哈希表的长度,则值越小,发生...

2018-11-09 17:43:26

阅读数 56

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭