数据结构与算法(C++)
文章平均质量分 87
C++
来自海王星
目前正在学习:C/C++/数据结构/操作系统
阶段目标:进大厂
展开
-
一文秒杀二分查找所有题目
朴素二分查找思想及实现这是学算法的入门算法,先举个最简单的例子:猜数字1:我心中默念一个数字,范围在1~100,你每次可以猜一个数,我会回答你大了,小了,直到猜中为止。答:比如假设要猜的数字是38,整个过程如下: 猜测范围(1,100),猜50,大了。所以比50大的都不用考虑了,包括50。 猜测范围(1,49),猜25,小了。所以比25小的也不用考虑了,以此推论。 猜测范围(26,49)猜37,小了。 猜测范围(38,49)猜44,大了。 猜测范围(38,43)猜40,大了。 猜测范围(原创 2021-01-30 13:47:38 · 225 阅读 · 0 评论 -
高级数据结构之AVL树
AVL树的简单介绍百度百科AVL树又叫做二叉平衡排序树,是平衡二叉树的一种改进版本。因为普通的平衡二叉树存在左右失衡,退化为链表的风险,因此需要某种策略来进行平衡调整。AVL树是根据左右子树的树高作为调整策略。也有一种叫做SB 树(size balance tree),是根据左右子树节点的数量作为调整策略。性质拥有二叉排序树所有性质:任意节点的值大于左孩子,小于右孩子。即:通过中序遍历二叉排序树既可以得到一个有序序列。任意节点满足左右子树高度差不大于1失衡条件AVL树的最重要性质就是左原创 2021-01-02 20:31:31 · 418 阅读 · 0 评论 -
链表的基本操作(C)
#include <stdio.h>#include <stdlib.h>typedef struct Node{ int data; struct Node *next;}Node, *LinkedList;//插入函数(目标链表,插入节点,插入位置)LinkedList insert(LinkedList head, Node *node, int index) { if(head==NULL) //如果目标链表为空 {原创 2020-10-06 11:42:29 · 167 阅读 · 0 评论 -
顺序表的基本操作
#include <iostream>#include <cstring>using std::cin;using std::cout;using std::endl;template <typename Type> class Vector { private: int size; //总容量 int length;//当前长度 Type *data; //指针变量,存储顺序表的首地址 public: //构造函数:输入:原创 2020-10-06 11:07:49 · 90 阅读 · 0 评论 -
矩阵算法:螺旋输出矩阵
题目:1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵,如下:输入数字2,则程序输出:1 24 3输入数字3,则程序输出:1 2 38 9 47 6 5输入数字4, 则程序输出:1 2 3 412 13 14 511 16 15 610 9 8 7代码:格式要求:最后一个不带空格#include <stdio.h>int main() { int matrix[100][100]; int m;原创 2020-09-25 18:58:32 · 451 阅读 · 0 评论 -
排序(1):冒泡排序
排序简介排序算法是经久不衰的经典入门算法,一般认为是,给定一组数,给出从小到大排序的结果。主要算法有:选择,插入,冒泡,归并,希尔,基数,快速,桶排序等等。每种排序有其自身的特性,适合不同的场景。分析排序算法主要从3个方面:时间复杂度空间复杂度是否稳定冒泡排序原理:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。 持续每次对越来原创 2020-09-23 09:59:15 · 124 阅读 · 0 评论