【数据结构】
QX_a11
认真生活
展开
-
【数据结构】二叉排序树(BST)
二叉排序树(Binary Sort Tree)又称二叉查找树、二叉搜索树。它或者是一颗空树,或者具有下列性质的二叉树:●若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;●若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;●它的左、右子树也分别为二叉排序树;如图所示:BST树结构:结点结构:typedef struct BstNode{ ...原创 2019-03-21 23:52:29 · 279 阅读 · 0 评论 -
【数据结构】简单选择排序以及时间复杂度的分析
简单选择排序简单选择排序法就是通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录交换。如图所示:完整代码#include <stdio.h>void SimpleSelectSort(int arr[],int len){ int i = 0; int min;//记录最小值的下标 int temp; for(i;i &l...原创 2019-04-20 11:19:34 · 7005 阅读 · 2 评论 -
【数据结构】希尔排序
希尔排序将原本大量记录数的记录进行分组。分割成若干个子序列,然后在这些子序列内分别进行直接插入排序,当整个序列都基本有序时,再对全体记录进行一次直接插入排序。基本有序:基本有序的意思就是小的关键字基本在前面,大的基本在后面,不大不小的基本在中间。像{2,1,3,6,4,7,5,8,9};但像{2,9,3,6,4,7,5,8,1}9在第二位,1在倒数第一位就谈不上基本有序。分割策略:将相距...原创 2019-04-20 18:20:38 · 151 阅读 · 0 评论 -
【数据结构】直接插入排序以及时间复杂度的分析
直接插入排序直接插入排序的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。完整代码 :#include <stdio.h>void InsertSort(int arr[],int len){ int i = 1; int temp; int j; for(i;i < len;i++) { temp ...原创 2019-04-20 16:57:43 · 8063 阅读 · 1 评论 -
【数据结构】基数排序
一、基数排序基数排序(RADIX SORT)是一种基于计数排序或者是最优桶排序。这里区分一下基数排序与桶排序基数排序只是借用十只桶来为0-9这十个基数进行排序分堆(可以说是最优的桶排序),反复的在保持稳定的情况下,对个位、十位。分别进行桶排序 桶排序里面的桶不一定是十个桶,可以是任意多的桶,只是桶的数量会影响排序的速度,桶排序主要是将元素映射到桶里面,再在各个桶里面进行排序,最后再将各个...原创 2019-04-11 23:23:42 · 527 阅读 · 0 评论 -
【数据结构】归并排序
一、归并排序归并排序是建立在归并上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。该算法的核心思想是二路归并。二、归并排序的介绍<1>归并排序的过程:(1)根据数组的mid值(数组的起始下标加数组的末尾下标除以二)将序列划分为2个子序列,多次向下递归,直到划分为一个子序列只包含一个数...原创 2019-04-02 21:13:45 · 204 阅读 · 0 评论 -
【数据结构】堆排序
一、堆堆是具有下列性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。在堆排序中使用到大顶堆。完全二叉树的性质:●如果按照层序遍历的方式给结点从0开始编号,则结点之间满足如下关系:●如果i = 0;则结点i是二叉树的根,无双亲●如果i > 0; 对于左孩子,则其双亲是结点i/2;对于右孩子,则其双...原创 2019-04-11 15:29:09 · 202 阅读 · 0 评论 -
Hash表算法
第一部分:Top K 算法详解问题描述百度面试题:搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1G。...转载 2019-04-02 11:48:36 · 234 阅读 · 0 评论 -
【数据结构】全排列问题
题目描述输入一个数组,打印出该数组中数字的所有排列。例如输入数组123,则输出由数字1、2、3所能排列出来的所有字符串123、132、213、231、321 和312。主要思路从集合中依次选出一个元素,作为排列的第一个元素,然后对剩余的元素进行全排列,如此递归处理,从而得到所有元素的全排列。以123,为例1为控制元素时,求23的排列;而在23中,2为控制元素;直到...原创 2019-03-30 20:30:46 · 972 阅读 · 0 评论 -
【数据结构与算法】Hash表(散列表)、哈希函数、解决哈希冲突
哈希表根据之前学的内容,查找一个关键字需要对待查序列的值一一进行比较;那在查找时能不能使用一种方式减少值的比较?所以就有了哈希表的概念,根据设定的哈希函数及处理冲突的方法将查找表中各数据元素存储在一段有限的连续空间中,即得哈希表,通过将待查记录的关键字值和它存储位置之间建立一个确定的对应关系,则查找时不再进行关键字值间的比较,从而提高查找时的效率。哈希函数:也叫做散列函数,根据关键字值...原创 2019-05-14 11:01:52 · 279 阅读 · 0 评论