
数据结构
wtz的代码人生
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
单链表的基本操作
基本操作的声明:typedef struct Node{ int data;//数据 struct Node *next;//指向下一个结点}Node, *List;//对单链表的操作void InitList(List plist);//初始化单链表bool Insert_head(List plist, int val);//头插法bool Insert_tail(L原创 2017-12-24 20:42:36 · 278 阅读 · 0 评论 -
顺序表的相关基本操作实现
静态: seqlist.h#pragma once//防止头文件多次引用#define MAX_SIZE 100typedef struct seqlist{ int arry[MAX_SIZE]; int size;//有效数据的长度 }seqlist;void InitSeqList(seqlist *seq);//初始化bool InsertSeqlist(...原创 2018-05-12 15:29:59 · 266 阅读 · 0 评论 -
选择排序,冒泡排序,直接插入排序,shell排序
一、选择排序: 时间复杂度:无序O(n^2) 有序O(n) 空间复杂度:O(1) 算法稳定性:不稳定(相同数值都交换了) 原理:选择一个值arr[0]作为标杆,然后循环找到除这个值外最小的值(查找小于标杆的最小值), 交换这两个值,这时最小值就被放到了arr[0]上,然后再将arr[1]作为标杆,从剩下未排序的值中找到最小值, 并交换这两个值。 例:4 1 5 12 0 第一趟:1...原创 2018-06-12 15:53:18 · 294 阅读 · 0 评论 -
BF算法与KMP算法
针对串的操作,在主串s里面查找子串sub,从pos位置开始的第一个符合的子串,返回第一个字符的下标。 BF算法如下: 时间复杂度:O(mn) 当字符相等时,j++,i++,当不等时,j需要回退到0号下标,i需要回退到之前的位置+1int BF(const char *s,const char *sub, int pos)//在s里面查找子串sub,从pos位置开始的第一个符合的子串,返...原创 2018-06-12 22:20:38 · 1619 阅读 · 0 评论 -
快速排序的递归非递归
快速排序: 即一趟快速排序的过程,返回基准。基准:平分数据段 时间复杂度:好情况(无序的数据):O(nlog2n) 坏(有序):O(n2) 空间复杂度:O(log2n) 算法稳定性:不稳定 原理:采用分治思想,在待排序的序列中选取一个值作为一个基准值,按照这个基准值得大小将这个序列划分成两个子序列,基准值会在这两个子序列的中间,一边是比基准小的,另一边就是比基准大的。这样快速排序第一次排...原创 2018-06-15 11:07:43 · 824 阅读 · 1 评论 -
堆排序
堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。/*父->左子2n+1 父->右子2n+2子->父 (n-1)/2一次调整建立大根堆,根最大。每个结点的值都大于或等于其左右孩子...原创 2018-06-15 20:13:51 · 223 阅读 · 0 评论