数据结构
不干就会被干
出道最晚的程序员
展开
-
数据结构_归并排序
归并算法 借用老铁 @玉面小蛟龙 的一张图加以说明 将一个数组中的元素平分,如果左右两边都是有序的,那么我们就可以比较大小将其插入一个新的数组空间,形成顺序; 但,如何使平分后的元素有序呢? 是不是可以一直分,分到一个数的时候,它就是有序的,然后再比较大小,插入新的数组空间去。 差不多,就是这么个感觉 来吧 一把梭试试看 #include<stdio.h> #include<stdlib.h> void MagerSort(int* arr, int n); void Mager原创 2021-08-20 16:23:57 · 79 阅读 · 1 评论 -
数据结构_快速排序
快速排序的核心思想: 就是选择一个参考值key(一般是第一个元素),将key通过快速排序逻辑放在一个左边都是比他小的数且右边都是比他大的数的位置上,具体实现思路如下: 定义begin和 end 两个哨兵分别在队头和队尾,用 i 和 j 记录头尾移动坐标;i++ 过程中发现比 key大的元素、end-- 过程中发现比key小的元素停下,交换arr[i] arr[j]值,然后继续相向而行; 直至 i >= j 停止; 这时 交换 key 和arr[i];此时的key 左边全是比他小的且右边全是比他原创 2021-08-19 17:24:37 · 90 阅读 · 1 评论 -
[数据结构]_堆排序
堆排序过程, 主要分为一下几点: 将数组元素理解为完全二叉树结构排列; 大堆:根大于左右子树; 当整个数所有节点都是大堆结构时,那么arr的0号下标,必然是最大的;如果是升序结构,那么此时交换arr[0]和arr[N], N号位置就可以固定为最大值;此时只需要再计算N-1个元素的大堆,就可以找到第二大数,依此类推,完成排序; 那么问题来了,怎样让每个节点都大堆排列呢? 首先叶子节点因其没有左右子树,或者说其左右子树为NULL,其本身便是大堆结构;因此,我们需要找到除了叶子节点外的节点;这就需要知道:怎原创 2021-08-18 19:31:48 · 66 阅读 · 0 评论 -
数据结构_希尔排序(直接插入排序)
希尔排序是在直接插入排序的基础上的一种优化:因为在逆序情况下,直接插入排序每次插入都要比较大小,遍历一边数组元组,复杂度很高; 所以针对这种情况,伟大的希尔,提出了将数组每轮元素间隔gap重新分组插入排序,gap越大,逆序情况下,大数据就越快回到数组高位,gap=1时,就是直接插入 #include<stdio.h> /*项目需求:对一个数组中的元素进行,插入排序 插入排序:插入一个数字,按照大小顺序在整个数组中排序;类似于接牌的过程, 按照牌的大小给牌排序,同时牌越来越多,占用的空间也是越来越原创 2021-08-17 21:51:22 · 474 阅读 · 1 评论 -
二叉树的前、中、后序 实现
//2xTree.h #include<stdio.h> #include<stdlib.h> #include<assert.h> struct node { char data; struct node* left; struct node* right; }; typedef struct node node; //前序:根->左子树->右子树 void prevOrder(node* n); //中序:左子树->根->右子树原创 2021-08-16 21:30:35 · 49 阅读 · 0 评论 -
数据结构_队列(单链表形式)_C实现
队列:先进先出,队头出相当于头删,队尾出相当于尾插; Queue.h #pragma once #include<stdio.h> #include<stdlib.h> #include<assert.h> #include<stdbool.h> /* 队列,先进的先出,尾插头删,因此很适合单链表的优势;所以选择单链表来表达队列; */ //定义一个符合队列特点的单链表 typedef int QueueDatatype; //定义节点 typede.原创 2021-08-16 16:21:56 · 72 阅读 · 0 评论 -
数据结构_C_数组栈
数组栈,在数组顺序表的基础上,融合栈 头进尾出的特点,即只可以尾插尾删;另外,需要top一个结构体成员来记录栈顶位置,取栈顶元素和插、删数据! Stack.h #pragma once #include<stdio.h> #include<assert.h> #include<stdlib.h> #include<stdbool.h> //栈:数组栈 栈的元素:数据,指针,栈顶; //数组栈->尾插+尾删 ;top从0开始,先赋值后top++;原创 2021-08-14 22:53:22 · 58 阅读 · 0 评论