
数据结构与算法
御镜堂
Hello,Future.
I'm coming now.
展开
-
【数据结构与算法】数据结构 C_链表基本接口的实现
头文件LinkList.h#ifndef __LINKLIST_H__ #define __LINKLIST_H__ #include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int DataType;typedef struct Node{ DataType ...原创 2018-07-26 15:15:33 · 301 阅读 · 0 评论 -
【数据结构与算法】选择排序
选择排序——直接选择排序+堆排序直接选择排序直接选择排序非常好理解,但是效率不是很好。实际中很少使用 时间复杂度:O(N^2) 空间复杂度:O(1) 稳定性:不稳定基本思想:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。代...原创 2019-09-20 22:02:22 · 186 阅读 · 0 评论 -
【数据结构与算法】插入排序
插入排序-----直接插入排序+希尔排序基本思想:每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的合适位置上去,直到元素全部插完为止。直接插入排序1. 元素集合越接近有序,直接插入排序算法的时间效率越高2. 时间复杂度:最优情况下:O(N),最差情况下:O(N^2)3. 空间复杂度:O(1),它是一种稳定的排序算法4. 稳定性:稳定...原创 2019-09-19 23:47:44 · 182 阅读 · 0 评论 -
【数据结构与算法】交换排序
交换排序-----冒泡排序+快速排序冒泡排序很简单的一种排序,很容易理解,时间复杂度为O(n^2),空间复杂度为O(1),稳定的排序基本思想:其实就是从头开始对整个数组里面的元素进行两两对比,比较大的元素放到后面,接着进行对比,知道最大的一个元素被提取出来放到整个数组的最后。然后再对剩下的元素进行相同的操作,直到整个数组被排序完成。代码实现public clas...原创 2019-09-17 23:14:50 · 265 阅读 · 0 评论 -
【数据结构与算法】数据结构C_二叉搜索树
二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树· 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 · 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值· 它的左右子树也分别为二叉搜索树,int a [ ] = {5,3,4,1,7,8,2,6,0,9};二叉搜索树基本操作BinarySearch...原创 2018-09-29 16:31:36 · 177 阅读 · 0 评论 -
【数据结构与算法】数据结构C_堆
数据结构C_堆概念:如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki <= K2*i+1 且 Ki<= K2*i+2 (Ki >= K2*i+1 且 Ki >= K2*i+2) i =0,1,2…,则称为小堆(或大堆)。小堆(大堆)中:任一结点的关键码均小于(大于...原创 2018-08-23 16:45:52 · 183 阅读 · 0 评论 -
【数据结构与算法】数据结构C_二叉树--基础操作
头文件:BinaryTree.h#pragma once#include <stdio.h>#include <malloc.h>#include <assert.h>#include <stdlib.h>#include "Queue.h"#include "Stack.h"//struct TreeNode//{// /...原创 2018-08-21 17:07:31 · 249 阅读 · 0 评论 -
【数据结构与算法】数据结构C_使用两个栈实现一个队列&&使用两个队列实现一个栈
1.使用两个栈实现一个队列因为栈的特性是后进先出,队列的特性是先进先出,根据题意我们可以设出两个栈s1,s2,s1可以用来入队,只需将数据保存到s1中即可,如果s2为空,则将s1中的数据依次导入到s2中,这样一来s1的栈顶元素成了s2的栈底元素,s1的栈底元素成了s2的栈顶元素,然后从s2中依次导出数据,这样便完成了队列的操作;如果s2不为空,则先将s2中的的栈顶元素,然后进一个数据出一个...原创 2018-08-19 19:23:22 · 351 阅读 · 0 评论 -
【数据结构与算法】数据结构C_队列的实现
队列:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(back)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的特性:先进先出队列的基本实现头文件:Queue.h#pragma once#include <stdio.h>#include <...原创 2018-08-19 17:17:12 · 617 阅读 · 0 评论 -
【数据结构与算法】数据结构C_栈的实现
栈:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。栈的特性:后进先出栈的基本实现:头文件:Stack.h...原创 2018-08-18 16:57:34 · 148 阅读 · 0 评论 -
【数据结构与算法】归并排序
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。1)归并的缺点在于需要O(N)的空间复杂度2)时间复杂度:O(N*logN)3)空间复杂度:O(N)4)稳定性:稳定基本思想:将待排序的元素序列分成两个长度相...原创 2019-09-26 10:52:27 · 198 阅读 · 0 评论