数据结构
mathematical
hercu1iz
i am a robot.
展开
-
树_Tree(创建|遍历|删除)
Tree前置知识实现前置知识理解树的基本概念树的遍历方式:先序|中序|后序遍历(决定方式的参照物:root)递归函数的终止实现#include<stdlib.h>#include<stdio.h>#include<string.h>typedef struct _Btree{ int value; struct _Btree* left; struct _Btree* right;}Btree,*PBtree;PBtree Crea原创 2021-07-11 22:22:24 · 114 阅读 · 0 评论 -
波兰式、逆波兰式
https://blog.csdn.net/linraise/article/details/20459751转载 2021-04-03 12:04:33 · 66 阅读 · 0 评论 -
ADS_链表
链表线性单链表循环双链表线性单链表单链表节点结构typedef struct Link{int elem;//代表数据域,这里也可以是任意数据类型struct Link * next;//代表指针域,指向直接后继元素}link;下面分别完链表相关的操作功能一般步骤初始化创建链表link* init_link()插入节点link* insert_elem(link* p,int elem,int pos)先修改尾巴删除节点link* delete_elem(link原创 2021-03-29 21:13:11 · 102 阅读 · 1 评论 -
ADS_插入排序(Insertion sort)
插入排序(Insertion sort)概述插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动 。实现void insertion_sort(int arr[], int len){ int i, j; for(i = 1; i < len; i++) { int key = arr[i原创 2021-03-02 12:21:01 · 142 阅读 · 0 评论 -
ADS_冒泡排序
冒泡排序(Bubble Sort)理解: ????吐泡泡,越往上越大。(当然排序可从大到小,也可从小到大。)实现void bubble_sort (int arr[], int len) { int temp; int i, j; for (i=0; i<len-1; i++) //外循环为排序趟数,len个数进行len-1趟 { for (j=0; j<len-1-i; j++) //内循环为每趟比较的次数,第i趟比较len-i次原创 2021-03-01 15:18:33 · 167 阅读 · 0 评论 -
ADS_选择排序
选择排序(Selection sort)概述选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。适用于规模n较小的排序。类似冒泡排序,但又不同。实现C版本void swap(int* a, int* b){ int原创 2021-03-01 15:11:47 · 375 阅读 · 0 评论 -
归并排序(递归 | 迭代)
归并排序(Merge Sort)递归(理解起来更容易)迭代递归(理解起来更容易)归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。递归方法参照各类资料总的来说分为两步骤 分 -》治void merge_sort_recursive(int arr[], int te原创 2021-02-27 11:52:44 · 789 阅读 · 0 评论 -
线性向量_插值查找
插值查找(Interpolation Search )插值查找是在折半查找的基础上进行优化,不过也只是在部分情况下能达到最好情况。适用条件:适合于关键字值分布均匀的集合。有序排列关键公式mi 代表 查找点midlo 代表 lowhi 代表 highe 代表 查找的值代码实现public static int InterpolationSearch(int[] arr, int lo, int hi, int e) { //注意:e < arr[0] 和 arr[a原创 2021-02-20 13:20:48 · 182 阅读 · 0 评论 -
斐波那契查找
斐波那契查找(Fibonacci Search) 简述前提实现代码总结简述斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、····,在数学上,斐波那契被递归方法如下定义:F(1)=1,F(2)=1,F(n)=f(n-1)+F(n-2) (n>=2)。该数列越往后相邻的两个数的比值越趋向于黄金比例值(0.618)。前提斐波那契查找的前提是待查找的数组必须顺序存储并且有序。实现在二分查找基础上改进,分割点mid=low + (f[k-1] + 1)。原创 2021-02-19 13:54:47 · 132 阅读 · 0 评论 -
线性向量_二分查找
二分查找(折半查找)非递归方法(迭代)递归非递归方法(迭代)//范围区间 [lo,hi)//查找 e//返回 下标//T 通用类型 function binarySearch(T arr, T *e,int lo, int hi) { int mid; lo = 0; hi = arr.length - 1; mid = (lo + hi) / 2; while(lo < hi) { if(*e < arr[mid]) { hi = mid; }原创 2021-02-17 15:43:35 · 101 阅读 · 0 评论 -
DSA_开篇概述
概述_DSA何为算法DSA图灵机模型(纸带)/RAM模型渐进复杂度(asymptotic complexity)算法分析何为算法程序 ≠ 算法DSADATA STRUCT & ALGORITHM数据结构+算法 = 程序图灵机模型(纸带)/RAM模型图灵机Function:(q,c;d,L/R,p)当前状态为q且当前字符为c;当前字符改为d;转向左侧/右侧的邻格;转入p状态(h状态则停机);渐进复杂度(asymptotic complexity)大O记号(上界限制)原创 2021-02-11 21:27:03 · 301 阅读 · 0 评论