
数据结构
文章平均质量分 92
903419
这个作者很懒,什么都没留下…
展开
-
布隆过滤器(Bloom Filter)
布隆过滤器原理及实现原创 2021-02-24 10:58:06 · 1438 阅读 · 0 评论 -
位图实现原理、模拟及库函数中bitset
位图的模拟实现原创 2021-02-23 21:57:21 · 846 阅读 · 6 评论 -
散列表(Hash Table)概念、散列冲突、开散列模拟实现散列表
散列表概念,及解决散列冲突的办法、开散列模拟实现散列表原创 2021-02-19 15:06:19 · 1255 阅读 · 2 评论 -
红黑树的插入、及模拟实现红黑树(附代码 + 图解 + 注释)
红黑树原创 2021-02-10 13:41:16 · 2398 阅读 · 1 评论 -
AVL树的四种旋转,模拟实现AVL树
AVL树从入门到精通原创 2021-02-03 22:59:48 · 375 阅读 · 1 评论 -
【数据结构】排序算法的实现------(直接插入排序、希尔排序、简单选择排序、堆排、冒泡排序、快排、归并排序、基数排序)
排序:是将一段数据元素(记录)的任意序列,重新排列成一个递增(递减)的有序序列。排序涉及到的概念:稳定性:若数据r[i] = r[j]并且r[i] 在 r[j] 之前(之后),经过排序后,r[i] 仍在 r[j] 之前(之后)。则算法是稳定的;否则是不稳定的。内部排序:数据内容全部放在内存中进行排序。外部排序:一般应用在大文件的排序上,待排序的数据存储在外存上,在排序过程中需进行多次的内、外存之间的交换。排序算法始终要涉及到两个操作:数据的比较数据的移动所以衡量一个排序的算法的好坏,就看原创 2020-10-29 20:24:49 · 480 阅读 · 0 评论 -
【数据结构】C语言实现排序算法------基数排序
基数排序:借助多关键字排序的思想对单逻辑关键字进行排序的方法。算法实现的思想如图:算法的实现:先统计数字的位数,记为n每次数组值除10^n得到的结果,就将该数值放在该结果上对所有数据做同样的操作,然后n-1读数据放进数组中,从小往大读,该位置若有多个数据,读取的时候按照先进先出的原则重复上述步骤,直到n = 0为止。代码实现:int GexRadixPos(int value, int i)//寻找插入位置{ int key = 0; while (i > 0) {原创 2020-10-29 20:19:04 · 895 阅读 · 0 评论 -
【数据结构】C语言实现排序算法------归并排序
归并排序:将多个已经有序的序列,合并为一个有序的序列。算法实现步骤:需要借助和序列一样长的辅助空间。逐步分割成单个数据分完之后进行合并大的在前、小的在后(做升序排序)示图:代码:void _MergeSort(int *arr, int left, int right, int *tmp){ if (left >= right) return; int mid = (left + right) / 2;//分割 _MergeSort(arr, left, mid, t原创 2020-10-29 19:39:23 · 316 阅读 · 0 评论 -
【数据结构】C语言实现排序算法------快速排序
快速排序:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的数据比另一部分记录的关键字小,则分别可对这两部分数据进行继续排序,以达到整个序列有序。快速排序有三个版本:1.hoare版本示图:代码:hoare版本int _QuickSort_1(int *arr, int left, int right)//hoare版本{ int tmp = arr[left];//基准值 while (left < right) { while (left < right &a原创 2020-10-29 17:01:43 · 1003 阅读 · 0 评论 -
【C语言】手动实现顺序表、链表(单、单循环、双循环)!!!!附详细代码及注释
顺序表和链表原创 2020-07-31 12:04:10 · 1078 阅读 · 0 评论 -
【数据结构】C语言实现排序算法------堆排序
堆排序:利用堆这种数据结构所设计的一种排序算法。大堆: 根节点值大于子节点的值,对应为升序序列。小堆: 根节点值小于子节点的值,对应为降序序列。创建大堆:图例创建步骤:寻找最后一个分支的根节点(记为pos)pos挨个减小,对每个分支,都进行大堆排列。根节点比子节点值大终止条件:pos < 0,不再进行大堆创建。大堆排序:升序排序步骤:堆顶元素和末尾元素值交换最大值排在末尾,该值不再做交换调整堆结构,满足大堆定义。重复执行步骤1,2,直到达到堆顶位置原创 2020-10-20 15:06:06 · 778 阅读 · 0 评论 -
【数据结构】C语言实现排序算法------简单选择排序
简单选择排序:每一次在待排序列中,选取最小(最大)的数据,放在待排的位置。图例:C代码实现:int GetMinPos(int *arr, int left, int right)//获取最小位置{ int Min = left; for (int i = left + 1; i < right; i++) { if (arr[Min] > arr[i]) { Min = i; } } return Min;}void SelectSort(int *原创 2020-10-20 10:57:08 · 727 阅读 · 0 评论 -
【数据结构】C语言实现排序算法------希尔排序
希尔排序:又称"缩小增量排序"。基本思想:先将待排序列分为若干个子序列分别进行直接插入排序,待整个序列“基本有序时”,再对整个序列进行一次直接插入排序。图例:原创 2020-10-20 10:22:11 · 375 阅读 · 0 评论 -
【数据结构】C语言实现排序算法------直接插入排序
直接插入排序(Straight Insertion Sort):将一个数据插入到已经排序的数据中,从而得到一个新的有序数据。目录1.直接插入排序2.折半插入排序3. 2路插入排序三种插入排序总结:图例:1.直接插入排序代码实现:直接插入void InsertSort_1(int *arr, int left, int right){ for (int i = left + 1; i < right; i++) { int end = i; while (end >原创 2020-10-19 20:37:00 · 812 阅读 · 0 评论 -
【数据结构】C语言实现排序算法------冒泡排序
冒泡排序:基本思想就是数据的每一趟比较就会将最大(最小)的数据放到末尾,从而达到升序(降序)的序列。又称石沉大海法。算法实现步骤:从起始位置比较和下一个位置的大小做交换,将大数(小数)置后依次比较置换后的数和下一个数进行比较,置换第一趟会将最大(最小)的数沉底,做n趟循环后,数据就会排好实例:如图绿色:正在比较的数据黄色:已经排好的数据代码:void BubbleSort(int *arr, int left, int right){ int n = right - left;原创 2020-10-29 15:01:05 · 599 阅读 · 0 评论