数据结构
_似水无痕
这个作者很懒,什么都没留下…
展开
-
二叉树经典面试题
二叉树的结点类型如下:typedef struct BtNode{ BtNode *leftchild; BtNode *rightchild; ElemType data;}BtNode, *BinaryTree;1. 给你一颗普通的二叉树,求二叉树中最远的两个节点的距离 分析: 1、如果具有最远距离的两个结点之间的路径经过根结点,则最远距离...原创 2018-08-14 16:33:56 · 530 阅读 · 0 评论 -
浅谈hash实现原理
哈希表(散列表)通过将关键码映射到表中的某个位置上来存储元素,然后根据关键码来访问元素。常用的hash函数有除留余数法,线性探测,二次探测,开链法,在大部分情况下基本就是用开链法:1、直接定址法取关键字的某个线性函数作为散列函数,Hash(key)=A*key+B;但是这种方法有很大的缺陷,就是当关键码比较分散时,hash表的所浪费的空间是非常大的。 2、除留余数法设散...原创 2018-08-07 19:56:53 · 5289 阅读 · 0 评论 -
【排序】插入排序,希尔排序,选择排序,冒泡排序,堆排序,归并排序优化及稳定性分析
InsertSort:(以升序为例)插入排序的基本思想是: 每次将一个待排的记录,按照其关键字的大小,插入到前面已经排好序的有序区中适当的位置,直到全部记录插入完毕为止。 假设待排序的记录存放在数组R[0..n]中,初始时R[0]是一个有序区,R[1..n]是无序区,从i=1开始,依次将R[i]插入到有序区R[0..i-1]中,生成一个包含n个记录的有序区void I...原创 2018-08-13 20:00:34 · 1097 阅读 · 0 评论 -
排序--Bubble的优化和性能(算法时间、空间复杂度、稳定性)分析
一、算法基本思想(1)基本思想冒泡排序的基本思想就是:从无序序列头部开始,进行两两比较,根据大小交换位置,直到最后将最大(小)的数据元素交换到了无序队列的队尾,从而成为有序序列的一部分;下一次继续这个过程,直到所有数据元素都排好序。算法的核心在于每次通过两两比较交换位置,选出剩余无序序列里最大(小)的数据元素放到队尾。二、算法实现void BubbleSort(int ...原创 2018-08-16 15:54:06 · 797 阅读 · 0 评论