数据结构
asdfghjklcgu
这个作者很懒,什么都没留下…
展开
-
冒泡排序
#include <stdio.h>void BubbleSort(int *arr,int len)//O(n^2),O(1),稳定{ int tmp=0; int i; int j; for(i=1;i<len;i++) { for(j=0;j<len-i;j++) { if原创 2018-12-05 15:52:01 · 169 阅读 · 0 评论 -
基数排序
原创 2019-05-15 00:05:37 · 116 阅读 · 0 评论 -
KMP算法
基本思想求next数组时间复杂度:O(m+n)#include <stdio.h>#include <string.h>#include <stdlib.h>//朴素查找算法//在主串str中查找子串subint BF(const char *str,const char *sub,int pos)//O(n*m){ int lenstr...原创 2019-01-22 21:06:14 · 112 阅读 · 0 评论 -
二叉树
二叉树特点 每个结点最多只有两棵子树(不存在度大于2的结点) 左子树和右子树次序不能颠倒(有序树)。 节点分左右子树二叉树性质1、 在二叉树的第i层上至多有2(i-1)个结点(i>0)2、 深度为k的二叉树至多有2k-1个结点(k>0)...原创 2019-04-05 00:53:26 · 544 阅读 · 0 评论 -
遍历
给如图所示的二叉树进行先序遍历,中序遍历,后序遍历先序遍历先访问根,再访问左,再访问右#include <stdio.h>#include <stdlib.h>#include <string.h>typedef struct BINARYNODE{ char ch; struct BINARYNODE* lchild; struct B...原创 2019-04-02 17:15:42 · 1664 阅读 · 0 评论 -
递归
递归:(1)直接或间接的调用自身的算法(2)使用函数自身给出的定义1. 阶乘循环实现阶乘时间复杂度:O(n)空间复杂度:S(1)int fun(int n){ int sum = 1; for(int i = 1; i <= n; ++i) { sum = sum * i; if(sum < 0) return -1; } return sum;...原创 2019-06-28 17:01:43 · 949 阅读 · 0 评论 -
二分查找(递归和非递归)
二分查找要求:数据存储在顺序存储结构中数字有序排放原理: 将数组分为三部分,依次是左值,中值,右值;将要查找的值和数组的中值进行比较,若小于中值则在中值前 面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分。循环实现二分查找template<class Type>i...原创 2019-06-29 00:57:18 · 103 阅读 · 0 评论 -
顺序表
顺序表:特点简单支持随机访问(下标);查找快;缺点:1.插入和删除慢(但是尾巴插入和删除O(1))定长顺序表#define SIZE 10//顺序表的总格子数typedef struct SeqList//定长顺序表{ int elem[SIZE]; int length;//有效数据个数}SeqList,*PSeqList;//44void InitSeqLi...原创 2019-07-25 00:02:33 · 126 阅读 · 0 评论 -
单链表
带头节点的单链表#pragma once//带头结点单链表:最后一个节点的next为NULL;带头结点操作简单typedef struct Node{ int data;//存放数据 struct Node *next;//存放下一个节点的地址}Node,*List;//List == Node *//typedef Node * List;//List == Node *...原创 2019-03-11 13:39:55 · 135 阅读 · 0 评论 -
中缀表达式变成后缀表达式
中缀表达式变成后缀表达式3+42/(5-4+1)1、加括号 ( 3+((42)/ ((5-4)+1) ))2、把符号放在括号外面 ( 3 ((4 2)* ((5 4)- 1) +)/)+3、除去括号 3 4 2 * 5 4 - 1 +/+转换过程需要用到栈,具体过程如下:1)如果遇到操作数,我们就直接将其输出。2)如果遇到操作符,则我们将其放...原创 2019-01-11 23:05:11 · 402 阅读 · 0 评论 -
插入排序
插入排序时间复杂度O(n^2)空间复杂度O(1)稳定特点:越有序越快,完全有序位O(n)#include &amp;amp;lt;stdio.h&amp;amp;gt;void InsertSort01(int *arr,int len)//O(n^2),O(1),稳定,{ int i; int j; int tmp; for(i=1;i&amp;amp;lt;len;i++) { tmp=arr[i];原创 2018-12-05 16:07:19 · 83 阅读 · 0 评论 -
希尔排序
//一趟shell过程void Shell(int *arr,int len,int gap) { int i; int j; int tmp; for(i=gap;i&amp;lt;len;i++) { tmp=arr[i]; for(j=i-gap;j&amp;gt;=0;j-=gap) { if(arr[j]&amp;lt;=tmp) { break; }...原创 2018-12-05 16:09:54 · 71 阅读 · 0 评论 -
快速排序
//快速排序#include &amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;gt;#include &amp;amp;amp;amp;lt;stdlib.h&amp;amp;amp;amp;gt;#include &amp;amp;amp;quot;stack.h&amp;amp;amp;quot;int Partition(int *arr,int lo原创 2018-12-05 16:12:45 · 127 阅读 · 0 评论 -
顺序表
seqlist.h//头文件,存放函数的声明#pragma once// 防止头文件被重复引用#define SIZE 10//顺序表的总格子数typedef struct SeqList//定长顺序表{ int elem[10]; int length;//有效数据个数}SeqList,*PSeqList;//44//typedef SeqList *PSeqList;...原创 2018-12-03 23:32:42 · 82 阅读 · 0 评论 -
堆排序
算法描述将待排序序列构造成一个大根堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了构造初始堆。将给定无序序列构造成一个大顶堆(一般升序采用大顶堆,降序采用小顶堆)。将堆顶元素与末尾元素进行交换,使末尾元素最大。然后继续调整堆,再将堆顶元素与末尾元素...原创 2018-12-07 00:38:44 · 80 阅读 · 0 评论 -
选择排序
算法描述:在长度为n的数组中,遍历所有的元素,找出最小的元素,和第一个元素进行交换。接着遍历剩下的元素,找出最小的元素,放在已经排好的序列后面。重复遍历剩下的元素,直到所有的元素都放在排好的序列后面。算法排序:时间复杂度:时间复杂度:O(n^2)空间复杂度:O(1)不稳定算法实现:void SelectSort(int *arr,int len){ int minIndex;...原创 2018-12-07 14:10:54 · 86 阅读 · 0 评论 -
二路归并排序
算法描述第一步:申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列第二步:设定两个指针,最初位置分别为两个已经排序序列的起始位置第三步:比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置重复步骤3直到某一指针超出序列尾将另一序列剩下的所有元素直接复制到合并序列尾算法排序时间复杂度时间复杂度O(nlogn)空间复杂度O(n)稳定算...原创 2019-01-11 16:17:50 · 362 阅读 · 0 评论 -
栈
顺序栈#pragma once//顺序栈,栈顶在尾部#define INIT_SIZE 10typedef struct Stack{ int *elem; int top; int stacksize;}Stack,*PStack;//初始化void InitStack(PStack ps);//入栈bool Push(PStack ps,int val);...原创 2019-02-22 16:07:54 · 80 阅读 · 0 评论 -
队列
环形队列#pragma once//环形队列,浪费一个单元格用于区分队满和队空#define SIZE 10typedef struct Queue{ int elem[SIZE]; int front; int rear;}Queue,*PQueue;void InitQueue(PQueue pq);//入队bool Push(PQueue pq,int val...原创 2019-02-22 16:07:35 · 78 阅读 · 0 评论