![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
CH-Lee
这个作者很懒,什么都没留下…
展开
-
【数据结构】---折半查找
1、 折半查找需要查找表中的数据有序的排列,首先将查找关键字k与表中间的元素R[mid]进行对比,若k>R[mid],则将最左端的下标low更新为mid右边的第一个下标,继续进行折半查找;若k<R[mid],则将最右端下标high更新为mid左边第一个下标,继续进行折半查找,直到找到关键字或左右下标相等即low=high。折半查找的平均查找长度为时间复杂度为O(log n)...原创 2018-07-19 10:50:05 · 3854 阅读 · 0 评论 -
【数据结构】---快速排序
1、快速排序的思想是通过一趟排序将序列分为两个部分,其中一部分的关键字不大于另一部分的关键字,对这两个部分递归进行快速排序,直到整个序列有序。2、快速排序实现算法:#include <stdio.h>#include <stdlib.h>typedef struct{ int data[100]; int length;}SqList;voi...原创 2018-07-22 16:31:08 · 203 阅读 · 0 评论 -
【数据结构】---希尔排序
1、希尔排序是在直接插入排序的基础上改良而来的,直接插入排序需要记录基本有序的情况下才能变得很高效,希尔排序便是采取跳跃分割的策略,将相距“增量”的元素组成一个子序列,这样才能保证最后进行直接插入排序时的序列是基本有序的。 希尔排序的时间复杂度是2、希尔排序实现算法:#include <stdio.h>#include <stdlib.h>#inc...原创 2018-07-22 13:04:38 · 149 阅读 · 0 评论 -
【数据结构】---直接插入排序
1、直接插入排序的基本操作是将一个记录插入一个有序表中,从而得到一个新的有序表。 直接插入排序的时间复杂度为,但比冒泡排序和简单选择排序性能要好一些。2、直接插入排序实现算法:#include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;...原创 2018-07-21 19:16:18 · 397 阅读 · 0 评论 -
【数据结构】---简单选择排序
1、简单排序算法就是通过n-i次关键字的比较,从中选择最小的记录,与交换到第一的位置。 首先需要一个min来记录所找到的最小下标,min初值为0,当data[min]大于data[j]时,说明min所指向的元素并不是最小的,所以min值重新赋值j,直到找到最小的值;再第二轮循环中,第一个最小值已经找到,需要寻找次小值,所以min此时为1,继续寻找,知道表中元素变得有序。 ...原创 2018-07-21 16:13:32 · 2311 阅读 · 0 评论 -
【数据结构】---冒泡排序
1、冒泡排序是一种交换排序,基本思想是两两比较相邻的关键字,如果反序就交换,直到没有反序为止。 (1)最简单的冒泡排序,严格意义来说并不算冒泡排序,因为它不满足两两比较相邻元素,只是最简单的交换排序而已, 效率非常低。 (2)正宗的冒泡排序,当i = 1时,j从表尾开始反向循环到头,逐个比较,将较小值交换到前面,直到找到最小值放到第一个位置。 (3)...原创 2018-07-21 14:00:36 · 315 阅读 · 0 评论 -
【数据结构】---哈希表查找算法
1、哈希查找也叫散列查找,整个散列查找过程大概分两步 (1)在存储时通过散列函数计算记录的散列地址,并按此散列地址存储该记录。 (2)当查找时,一样通过散列函数计算记录的散列地址,然后访问散列地址的记录。 散列函数的构造方法 (1)直接定址法 取关键字的某个线性函数值为散列地址 ...原创 2018-07-20 21:52:19 · 39681 阅读 · 6 评论 -
【数据结构】---平衡二叉树(AVL树)
#include <stdio.h>#include <stdlib.h>typedef struct BiTNode{ int data; int bf;//节点平衡因子 struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;//二叉树结构void Right(BiTree &p){ B...原创 2018-07-20 16:37:21 · 252 阅读 · 0 评论 -
【数据结构】---二叉排序树查找、插入、删除
1、 定义:二叉排序树是一颗空树或者是具有一下性质的二叉树。 (1)若它的左子树非空,则左子树上所有的结点值均小于根结点的值。 (2)若它的右子树非空,则右子树上所有的结点的值均大于(或等于)根结点的值。 (3)它的左右子树也分别是二叉排序树。2、二叉排序树 查找、插入、删除实现算法#include <stdio.h>#...原创 2018-07-20 12:08:41 · 2038 阅读 · 1 评论 -
【数据结构】---插值查找
1、插值查找是在折半查找的基础上进行优化,将mid的值修改为 将查找关键字于查找表中的最大最小关键字对比后进行查找。 时间复杂度为O(log n)2、插值查找实现算法#include <stdio.h>#define MAXSIZE 100typedef int KeyType;typedef char InfoType[10];typedef ...原创 2018-07-19 12:11:58 · 2854 阅读 · 0 评论 -
【数据结构】----顺序表查找算法
1、顺序查找是最基本的查找算法,从表的开头或结尾依次对表中的元素进行对比,直到成功找到关键字或是将表中的所有元素对比一遍。顺序查找的平均查找长度为时间复杂度为O(n)2、顺序表的实现算法 可以自己输入序列,再自己输入需要查找的关键字#include <stdio.h>#define MAXSIZE 100typedef int KeyType;t...原创 2018-07-18 22:25:03 · 20582 阅读 · 0 评论 -
【数据结构】---堆排序
1、堆排序的基本思想是将一组待排序的数列,排成一个大根堆(小根堆),从而输出堆顶最大的元素,依次类推,将剩下的元素排成堆,依次输出最大元素,得到有序序列。 堆排序的时间复杂度为。2、堆排序算法实现:#include <stdio.h>#include <stdlib.h>#include <iostream>using name...原创 2018-07-22 22:48:35 · 244 阅读 · 0 评论